ubuntu下编译undefined reference to error解决方法

本文总结了在Ubuntu环境下遇到编译错误'undefined reference to'时的常见原因及解决办法,包括未包含函数声明的头文件、链接顺序、gcc/ld版本不匹配、C/C++混合编译问题以及大小写错误等。建议检查编译规则、库路径、链接顺序及程序依赖。
摘要由CSDN通过智能技术生成
在ubuntu下编译程序时,经常会遇到“undefined reference to xxx xx” 报错,这是一个程序猿经常犯的错误,也是比较容易解决的错误

这里总结一些可能的原因和解决方案,给需要的朋友:

首先,出现这个错误,很大可能是你根本没有包含这个函数申明的头文件,这个是新手容易犯的失误,你需要保证这个“undefined reference to xxx xx”的申明一定要在编译规则下找得到,这是最基本的,也是非常关键的,如果这个声明没找到的话,那编译系统不给你报个错误也算的是天理难容!

如果是编译一些库和中间件报错,undefined reference error,那就得先提一下Linux gcc链接规则:

链接的时候查找顺序是:

-L 指定的路径, 从左到右依次查找

由 环境变量LIBRARY_PATH 指定的路径,使用":"分割从左到右依次查找

/etc/ld.so.conf 指定的路径顺序

/lib 和/usr/lib (64位下是/lib64和/usr/lib64)

动态库调用的查找顺序:
ld的-rpath参数指定的路径, 这是写死在代码中的
ld脚本指定的路径
LD_LIBRARY_PATH 指定的路径
/etc/ld.so.conf 指定的路径 /lib和/usr/lib(64位下是/lib64和/usr/lib64)

  一般情况链接的时候我们采用-L的方式指定查找路径, 调用动态链接库的时候采用LD_LIBRARY_PATH的方式指定链接路径.

另外注意一个问题,就是只要查找到第一个就会返回,后面的不会再查找. 比如-L./A -L./B -lx 在A中有libx.a B中有libx.a和li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值