C++ g++;只查找.lib文件
我正在使用Windows 10和mingw-w64。我试着用静态链接库编译一个程序。我使用了这个命令:C++ g++;只查找.lib文件,c++,gcc,g++,C++,Gcc,G++,我正在使用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
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++
来自:
当使用参数'-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不会查找.a
文件,因为它不希望它们存在
从文档中:
MinGW支持根据“.lib”和“.dll”约定命名的库,以及*nix系统上常见的“lib.a”约定
这是因为windows不像*nix那样为其库使用
lib
前缀(在windows上,共享库foo将是foo.dll
,在*nix上,它将是libfoo.so
)。我不知道你是如何得到一个。a
缺少lib
前缀(除非你重命名了它),但是你的。a
文件中应该有一个lib
前缀(当指定这个时,你省略了lib
部分,这样libfoo.a
就变成了-lfoo
)问题是mingw不会查找.a
文件,因为它不希望它们存在
从文档中:
MinGW支持根据“.lib”和“.dll”约定命名的库,以及*nix系统上常见的“lib.a”约定
这是因为windows不像*nix那样为其库使用lib
前缀(在windows上,共享库foo将是foo.dll
,在*nix上,它将是libfoo.so
)。我不知道你是如何得到一个。a
缺少lib
前缀(除非你重命名了它),但是你的。a
文件中应该有一个lib
前缀(当指定这个时,你省略了lib
部分,这样libfoo.a
就变成了-lfoo
)