Gcc &引用;“未定义引用”;来自ld的错误

Gcc &引用;“未定义引用”;来自ld的错误,gcc,makefile,linker,linker-errors,Gcc,Makefile,Linker,Linker Errors,这并不像标题可能让你想到的那么天真 对于第三方共享库中的两个函数符号,我从linker/ld收到一个“Undefined Reference”错误,我正试图将其与我的可执行文件链接 奇怪的是,这个库本身应该包含有问题的违规符号的定义 奇怪的是,在我的项目中有几个可执行文件,有些面临这个问题,有些则没有 我是否弄乱了我的gcc/ld标志,或者是其他什么东西?从您的描述中不可能看出,其中包含的有用信息几乎为零。一种可能是,您在某些源文件中没有包含正确的头文件。从您的描述中无法看出,其中包含的有用信息

这并不像标题可能让你想到的那么天真

对于第三方共享库中的两个函数符号,我从linker/ld收到一个“Undefined Reference”错误,我正试图将其与我的可执行文件链接

奇怪的是,这个库本身应该包含有问题的违规符号的定义

奇怪的是,在我的项目中有几个可执行文件,有些面临这个问题,有些则没有


我是否弄乱了我的gcc/ld标志,或者是其他什么东西?

从您的描述中不可能看出,其中包含的有用信息几乎为零。一种可能是,您在某些源文件中没有包含正确的头文件。

从您的描述中无法看出,其中包含的有用信息约为零。一种可能是您在某些源文件中没有包含正确的头文件。

是否检查了链接顺序?这在GCC的最新版本中变得更加严格

例如,这样做会导致一个常见问题:

g++ -lX11 -lSuperLibrary awesomeApp.cpp
与此相反:

g++ awesomeApp.cpp -lX11 -lSuperLibrary
如果库标志相互依赖,那么它们的顺序也很重要

有一些用于执行库多次传递的标志,这些标志可能会帮助您解决问题。要与上面相同,但使用链接器“分组”库并对它们进行递归链接(以链接器性能为代价),您可以执行以下操作:

g++ awesomeApp.cpp -Wl,--start-group -lX11 -lSuperLibrary -Wl,--end-group
其中
-Wl,
将一个选项传递给链接器。。。在这种情况下,
--开始组
--结束组

链接顺序之所以重要,一个很好的类比是


我希望这会有所帮助。

您检查过链接订单了吗?这在GCC的最新版本中变得更加严格

例如,这样做会导致一个常见问题:

g++ -lX11 -lSuperLibrary awesomeApp.cpp
与此相反:

g++ awesomeApp.cpp -lX11 -lSuperLibrary
如果库标志相互依赖,那么它们的顺序也很重要

有一些用于执行库多次传递的标志,这些标志可能会帮助您解决问题。要与上面相同,但使用链接器“分组”库并对它们进行递归链接(以链接器性能为代价),您可以执行以下操作:

g++ awesomeApp.cpp -Wl,--start-group -lX11 -lSuperLibrary -Wl,--end-group
其中
-Wl,
将一个选项传递给链接器。。。在这种情况下,
--开始组
--结束组

链接顺序之所以重要,一个很好的类比是


我希望这能有所帮助。

“我是否弄乱了我的gcc/ld标志或是其他原因?”这个问题的答案是“是”。请提供更多详细信息。“我是否弄乱了我的gcc/ld标志或是其他原因?”这个问题的答案是“是”。请提供更多细节。