linux下链接出现未定义的应用解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下链接出现未定义的应用解决方案相关的知识,希望对你有一定的参考价值。

在linux下生成程序时,首先需要编译为.o文件,接着进行链接。在链接的时候容易出现未定义的应用错误,根本原因是找不到函数,但造成该现象有多种可能:

1.源程序中函数名不一致,比方说a.c中为a函数,在b文件调用时却用的时a1,就会造成找不到函数。

2.当链接的o文件不在一个文件夹下时,还需要考虑路径输入不正确,原理与第一条类似。

3链接时.o文件顺序不对,由于函数调用之间存在依赖性,不当的链接顺序也可能导致未定义出现。

4.当利用Makefile进行大型程序编译链接时,与第三种可能原因类似,还有可能是由于链接库的顺序不当导致出现未定义。例如main程序需要静态链接x.a,y.a,z.a;而x.a又需要z.a中的函数,则Makefile书写时应该为:

MAIN_LDADD=z.a x.a y.a而非x.a,y.a,z.a;

以上是关于linux下链接出现未定义的应用解决方案的主要内容,如果未能解决你的问题,请参考以下文章

使用未定义的 struct “timeval” 解决方案

如何在链接到静态库的 DEV-CPP 中构建控制台应用程序时解决对 _imp__** 的未定义引用?

测试未发布应用的 Firebase 动态链接

Linux Debian下突然所有命令未找到,显示bash: xxxxx: command not found的解决办法

Linux Debian下突然所有命令未找到,显示bash: xxxxx: command not found的解决办法

Linux Debian下突然所有命令未找到,显示bash: xxxxx: command not found的解决办法