最近在板子上调试程序遇到一个问题,通过串口下载的程序在搭建好的板子环境上无法运行。

gdb调试指令失效,程序无法运行。改用file指令查看,提示我如下错误:

interprter /lib/ld-linux-armhf.so.3 error reading(Invalid argument)

标题

换用readelf指令查看二进制文件信息,错误如下:

标题

经此确认,问题为 此程序运行需要ld-linux-armhf.so.3动态库。在网上查找解决方案。解决方案如下:

在/etc/profile文件中添加:

export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH

在/lib目录下执行以下语句

ln -s ld-2.21.so ld-linux-armhf.so.3

解决方案的分歧从这开始,正常的执行结果应该是运行成功,然后二进制文件执行成功。

但是在我的电脑上,出现了以下错误:

ln : failedto create symbolic link 'ld-linux-armhf.so.3': File exists

经过查找,该文件确实存在,但是二进制文件依然无法执行。

重新尝试N多次之后,放弃,程序依然无法执行

后来改换思路,是否是文件传输过程中存在问题。然后将内存卡从板子上取下,通过读卡器接到主机上,直接拷贝运行文件,在重新接入板子上,运行,成功! 

最终确定问题的根源在于串口通信的过程中,导致二进制文件中的某些信息丢失,造成程序无法执行。

 

Logo

更多推荐