你的-L/usr/freeware/lib32 -lbz2表示要連接"/usr/freeware/lib32/libbz2.a"這個庫文件。 有時缺省

来源:互联网 发布:红警网络对战平台 编辑:程序博客网 时间:2024/06/05 18:53
Makefile怎麼改?以文找文
wishdeen 在天空部落發表於10:29:18 | unix
 
makefile其實就是將C程序或者Fortran程序的編譯規則定義一下,因此許多參數就是他們的編譯選項。要參考這些參數的作用,可以用幫組命令即 可。比如:"man f90",就能查看Fortran編譯器的參數設置信息。我簡單介紹一下你makefile中的幾個參數: -L表示庫連接的路徑,比如 -L/common/netcdf/lib ,而小寫的L,即-l 後面表示庫文件的名稱,但是它又是一種省略形式的名稱,比如: -lnetcdf ,它表示要連接的庫文件名稱為「libnetcdf.a」,即前面加"lib"前綴,後面加".a"後綴。這兩個參數(-L和-l)經常組合使用,前者表 示庫文件存放的路徑,後者表示要連接的庫文件名稱。 所以,你的-L/usr/freeware/lib32 -lbz2表示要連接"/usr/freeware/lib32/libbz2.a"這個庫文件。 有時缺省掉"-L",它則會在當前路徑下找庫文件。 -I則表示include代碼存放的路徑,也就是源程序代碼中如果有#,則編譯的時候,要找include的代碼,-I則給出它的搜索路徑。在F90中,它也用來指定模塊(module)文件所在的路徑。

EX: 
ifort -o abc.exe abc.f /xxx/xxx/xxx/lib/libnetcdf.a
ifort -o abc.exe abc.f -L/xxx/xxx/xxx/lib -lnetcdf

---
http://bbs.lasg.ac.cn/bbs/viewthread.php?tid=30439&extra=&page=1
http://lagoon-lhf.blogspot.tw/2010/07/library-ifortnetcdf.html