2012-08-01 55 views
3

我無法將我的程序鏈接到庫。我從來沒有這樣做過,所以我可能做一些愚蠢的事情,但據我所知,我做的是正確的事情。我需要將我的程序foo.f90鏈接到位於我的主目錄下的其他目錄中的庫libbar.a。我輸入命令:gfortran無法找到存在的庫

gfortran -c foo.f90 
gfortran -o foo foo.f90 -L/directory/of/library -llibbar.a 

但這拋出:

ld: library not found for -llibhealpix.a 

這裏當然libhealpix.a是真正的圖書館(而不是libbar.a

任何想法,爲什麼會發生?

回答

12

嘗試-lbar(或者-lhealpix,如果這是真正的庫名稱)。

-lxyz導致搜索名爲libxyz.a的文件。因此,如果您指定了-llibbar.a,則該文件需要命名爲liblibbar.a.a

你也可以簡單地指定gfortran命令行中歸檔文件的路徑和全名:gfortran -o foo foo.f90 /directory/of/library/libbar.a

+0

非常感謝。非常正確。 – StevenMurray 2012-08-01 07:47:36

+0

非常感謝。 奇怪爲什麼連接器爲輸入庫名添加'lib'前綴和'.a'後綴 – 2014-07-17 20:52:55