GNU GCC 编译器只接受"<filename>.a"文件作为库吗?



所以,基本上我要问的是,GNU GCC编译器是否只识别"。a";文件作为库文件,我之所以这么问是因为,我在我的代码块cpp项目中链接了3个库文件,其中两个库文件有"。a";扩展,最后有一个";。lib";扩大当我试图构建项目时,这就是我得到的错误:

-------------- Build: Debug in OpenGl_GLFW (compiler: GNU GCC Compiler)---------------
g++.exe -Wall -g -Idependenciesinclude -Idependenciesinclude
-IC:UsersMubarakDocumentsProgrammingCppOpenGl_GLFWdependenciesinclude -c C:UsersMubarakDocumentsProgrammingCppOpenGl_GLFWdependencieslibglew32s.lib -o objDebugdependencieslibglew32s.o
g++.exe -Ldependencieslib -Ldependencieslib -LC:UsersMubarakDocumentsProgrammingCppOpenGl_GLFWdependencieslib -o binDebugOpenGl_GLFW.exe objDebugdependencieslibglew32s.o dependenciesliblibglfw3.a dependenciesliblibglfw3dll.a objDebugsrcmain.o   -lopengl32.a dependencieslibglew32s.lib dependenciesliblibglfw3.a -lopengl32.a dependencieslibglew32s.lib dependenciesliblibglfw3.a
g++.exe: warning: C:UsersMubarakDocumentsProgrammingCppOpenGl_GLFWdependencieslibglew32s.lib:
linker input file unused because linking not done
g++.exe: error: objDebugdependencieslibglew32s.o: No such file or directory
Process terminated with status 1 (0 minute(s), 0 second(s)) 1
error(s), 1 warning(s) (0 minute(s), 0 second(s))

所以看起来.lib库文件有问题,我开始在visualstudio社区编程,在那里,.lib文件可以工作。。。。。。。。。。。。。所以我开始感觉到";库文件只有在同一编译器负责创建它们的情况下才能与特定编译器一起工作;我只是想确定一下。

如果是这样,为什么不同的编译器会生成具有不同扩展名的库文件?而且,不同的编译器的编译方式不同吗?不同的编译器会产生不同的机器代码吗?

"。lib";库是动态类型的,编译器认为将它们插入代码中不是程序员的工作。这些库以及";。dll";在编译过程中由编译器本身插入。您还可以使用其他扩展,如";。h〃;例如

.lib可能是一个visualstudio静态库,无法工作无论如何使用gcc

在其中一条评论中发现了这一点,这意味着visual studio使用了.lib库,而gcc使用了.a库

最新更新