Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ g++;只查找.lib文件_C++_Gcc_G++ - Fatal编程技术网

C++ g++;只查找.lib文件

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

我正在使用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++

来自:

当使用参数'-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