當你的程式的中有使用到 math.h 的function時,在大多數的unix環境或使用gcc,你都需要指定連結函數 -lm,這是一個萬年faq,據說在comp.lang.c 上個月可以出現十篇以上,可是為什麼gcc,要把libm 從 libc 中拆出來呢?翻了一下news原因大概有個:

第一:libm的體積大了點,在freebsd 6.1 上,它們分別的大小是
-r--r--r-- 1 root wheel 3043404 Jan 30 13:06 libc.a
-r--r--r-- 1 root wheel 467968 Jan 30 13:06 libm.a

libm 的大約是libc 的 15.37%,如果以header 的比例來看,好像有比較大一點

第二:portability,理由是在古早古早以前,有的機器有fp support有的沒有,所以要提供兩套lib,但如果包在一
起,儲存空間可是很貴的。另外是有的環境本來就是拆開的,為了相容性,那就拆開吧。


個人覺得第二個應該比較合理啦,也許是作者忘了,就是 open 的參數 O_CREAT,為什麼不是 O_CREATE 呢?因為作
者打錯字了..:>
創作者介紹

軟趴趴

cmchao 發表在 痞客邦 PIXNET 留言(0) 人氣()