2017-01-01 87 views
2

我想弄清楚如何在我的項目中創建庫和一般處理多個文件。ld不尋找.so文件

但是,ld報告它「找不到-lhello」(其中libhello是我的自定義庫)。不過,當我使用-l:libhello.so時,它編譯得很好。

我然後跑LD與--verbose選項,這裏就是我的了:

[...]

試圖打開的lib/libhello.dll.a失敗

企圖開放式的lib/hello.dll.a失敗

試圖打開的lib/libhello.a失敗

試圖打開的lib/hello.lib失敗

試圖打開的lib/libhello.dll失敗

試圖打開的lib/Hello.dll的失敗

試圖打開的lib \ libhello.a失敗

[...]

這個列表繼承了一堆其他的目錄和文件名,但是結果並不是它們中的任何一個是「hello.so」或「libhello.so」。我不知道爲什麼,但它看起來像編譯時ld沒有找到.so文件。我在這裏做什麼?

+0

在哪裏libhello.so安裝?如果庫是包含它的路徑不包含在'LD_LIBRARY_PATH'中,那麼-l是不夠的,你必須指定'-L'。此外,您正在使用mingw,因此您使用的是Windows操作系統,它需要.dll共享庫,而不是.so庫。 – Jack

+0

我正在使用多個文件夾,但我正在使用-L和-I。謝謝,@Jack。 – NomeQueEuLembro

回答

0

在Windows上,共享庫的後綴爲.dll,而不是.so。如果您有一個爲Windows生成共享庫的Makefile,則它們應具有.dll擴展名。

也可以在Windows,import libraries使用,這就是爲什麼你看到兩個

試圖打開的lib/hello.lib失敗 試圖打開的lib/libhello.dll失敗

+0

這工作!我的印象是,.dll文件是別的。非常感謝! – NomeQueEuLembro