簡體   English   中英

g++ 只查找.lib 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM