cannot dynamically load executable的尴尬经历

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(也是无语)。
该问完全是英文不熟卡住的,看来英文水平真是很重要啊!

你可能感兴趣的:(linux,编译,动态库,专业英语水平)