2013-03-08 38 views
1

我正在嘗試使用Derelict2綁定在D中編寫測試程序。這裏是我的代碼:LINUX中dmd和Derelict的鏈接器問題:Ld無法找到.a文件

import std.stdio; 
import derelict.sfml.audio; 

pragma(lib, "/home/ryan/Derelict2/lib/libDerelictSFMLAudio.a"); 
pragma(lib, "/home/ryan/Derelict2/lib/libDerelictUtil.a"); 


void main(){ 
    DerelictSFMLAudio.load(); 
} 

所有廢棄的.di文件在DMD的默認輸入目錄,所以我的印象是,下面的命令應該編譯和鏈接我的程序下。

dmd test.d -L-lDerelictSFML -L-lDerelictUtil -L-ldl 

不過,我得到這個錯誤:

/usr/bin/ld: cannot find -lDerelictSFML 
/usr/bin/ld: cannot find -lDerelictUtil 
collect2: error: ld returned 1 exit status 
--- errorlevel 1 

我究竟在做什麼錯?

一點題外話,但關注的問題,以及:

什麼是-ldl標誌嗎?我知道它需要一個成功的鏈接,但我不確定它是如何,它不在ld手冊中。

回答

1

你需要通過庫位置(例如-LL/usr/lib中/ DMD)到DMD還有:

dmd test.d -I/usr/include/d -L-L/usr/lib/dmd -L-lDerelictSFML -L-lDerelictUtil -L-ldl 

-ldl代表libdl這是賦予你的程序鏈接的功能庫動態地到庫。