[英]g++ only looks for .lib files
我正在使用 Windows 10 和 mingw-w64。 我嘗試使用靜態鏈接庫編譯程序。 我使用了這個命令: g++ main.cpp -Llibs/ -lfoo
。 但是 MinGW 說它找不到庫文件,所以我嘗試將foo.a
重命名為foo.lib
和瞧,編譯器找到foo.lib
。 為什么 MinGW 不再看到*.a
文件了?
從文檔中:
當使用參數“-lxxx”調用 ld 時,它將嘗試在其搜索路徑的第一個目錄中查找,
- libxxx.dll.a
- xxx.dll.a
- libxxx.a
- xxx.lib
- libxxx.lib
- cygxxx.dll
- libxxx.dll
- xxx.dll
或者,您可以將libs/foo.a
作為參數直接傳遞給g++
。
問題是 mingw 不會查找<libname>.a
文件,因為它不希望它們存在。
從文檔:
除了 *nix 系統上常見的普通“lib.a”約定之外,MinGW 還支持根據“.lib”和“.dll”約定命名的庫
這是因為 windows 不像 *nix 那樣使用其庫的lib
前綴(在libfoo.so
上,共享庫 foo 將是foo.dll
)。* 我不確定你是如何設法讓.a
缺少lib
前綴(除非你重命名它),但是你的.a
文件中應該有一個lib
前綴(指定這個時你省略了lib
部分,所以libfoo.a
變成-lfoo
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.