繁体   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