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