静态连接顺序的问题

在使用paho-mqtt-c和paho-mqtt-cpp静态库时遇到连接问题,错误提示MQTTReasonCode_toString未定义。经过实验发现,静态库的连接顺序会影响编译结果。原本的连接顺序${MQTTC_LIB} ${MQTTCXX_LIB}导致错误,而调整为${MQTTCXX_LIB} ${MQTTC_LIB}后编译成功。这表明静态库的符号查找可能遵循某种特定顺序,但原理不明确。通过链接顺序影响分析解决了困惑。
摘要由CSDN通过智能技术生成

静态连接顺序的问题

在使用paho-mqtt-c 和paho-mqtt-cpp库时,考虑到部署的方便,决定使用静态库。
paho-mqtt-cpp 是依赖paho-mqtt-c 做的c++ 封装库。连接动态库,不要考虑具体的连接顺序。

纯静态库,连接问题

g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

出现MQTTReasonCode_toString,未定义
连接顺序: ${MQTTC_LIB} ${MQTTCXX_LIB}时
在这里插入图片描述查看符号表,MQTTReasonCode_toString时存在的,当时依然报错。

readelf -s build/src/libpaho-mqtt3a.a | grep -i MQTTReasonCode_toString

在这里插入图片描述
调整连接顺序: ${MQTTCXX_LIB} ${MQTTC_LIB},编译通过。静态库符号是向后查找的么?
不明白其原理,属实困惑。
在这里找到原理解释

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值