cannot dynamically load executable的尴尬经历

本文记录了在运行新编译的程序时遇到cannotdynamicallyloadexecutable错误的经历,详细描述了从最初的问题定位到最终解决方案的过程,包括检查动态库编译方式、使用readelf和objdump工具分析、在目标机器上执行和查找冲突的可执行文件,最终成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cannot dynamically load executable的尴尬经历


运行新编译的程序时报错:
./sdktest: error while loading shared libraries:test.so: cannot dynamically load executable

1.【executable:可执行的】第一反应是动态库编译方式有问题,加入-shared等参数后仍然不行。
2.google baidu一圈,没有可参考的结果。
3.readelf、objdump等查看 test.so,没有发现问题。
4.仔细阅读cannot dynamically load executable,这里的executable似乎不太对。如果executable是名词,不是形容词呢?翻译就是:不能动态加载可执行文件。那就是说test.so是一个可执行文件。
5.将该so导出,file查看:
ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=f7b7efe0cf4ec3fa01db94edb515fef6478012c1, not stripped
确实为可执行文件。

6.目标机器上,执行该so,发现居然可以运行。

7.在目标机器上搜索所有的test.so,然后删除。再次重新下载我编译的so。
8.运行通过。

9.再次查找executable的解释,在维基百科发现如下:
In computing, executable code or an executable file or executable program, sometimes simply referred to as an executable or binary…

10.结论:之前目标机器有一个可执行的test.so(也是无语)。
该问完全是英文不熟卡住的,看来英文水平真是很重要啊!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值