2014-10-05 112 views
1

有人可以幫我弄清楚這個錯誤。x86_64-pc-cygwin gcc編譯錯誤

我想編譯一個測試程序,它給出了這個錯誤 /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: cannot find -ltest

我給了lib的正確路徑cc test.c -I"./include" -L"./Lib" -ltest,仍然是拋出錯誤。庫存在於提到的文件夾中。

我嘗試了太多討論過的東西,但沒有任何幫助。

+0

做'ls Lib'併發布結果 – 2014-10-06 18:13:51

回答

0

在Cygwin,你應該能夠構建的東西,如生成相應的共享對象庫:

gcc -shared -o libtest.so -Wl,--out-implib,libtest.dll.a libtest.c 

libtest.c將是你.c文件的名稱或用於構建的.c文件列表中圖書館。

這應該會產生一個libtest.dll.alibtest.so。您可以使用導入庫將您的程序鏈接到共享對象。所以,你可以編譯與應用:

gcc test.c -I./include -LLib/ -ltest 

Lib/libtest.dll.a是一個庫(導入庫),它知道如何加載.so文件在運行時。

要更像你這樣的Windows可以刪除.so後綴並使用.dll。所以,編譯你的共享對象這種方式將工作太:

gcc -shared -o libtest.dll -Wl,--out-implib,libtest.dll.a libtest.c 

,然後編譯客戶端(測試)象我們上面那樣:

gcc test.c -I./include -LLib/ -ltest 

因爲你-o libtest.dll導入庫編譯上面的共享對象當您的程序執行時,現在創建的將會搜索libtest.dll而不是libtest.so

請注意,在運行時Windows會搜索共享對象(或dll)的路徑。所以你將不得不將你的共享對象(或DLL)移動到你正在運行你的應用程序的目錄中;或者將你的共享對象(dll)複製到你路徑上的某個地方;或將您的./Lib/目錄添加到您的路徑。