LiK*_*Kao 4 bash executable dynamic-linking
我目前正在尝试让一些硬件在嵌入式设备上工作。驱动程序的一部分是可执行文件,必须启动它才能使硬件工作。但是,当我尝试执行它时,我得到
bash: no such file or directory
Run Code Online (Sandbox Code Playgroud)
我已经检查过,文件肯定在那里,可执行文件等。我在网上环顾四周,我发现这也可能与编译文件的体系结构和我正在使用的体系结构之间的问题有关。但是我找不到任何错误。这是我运行的一些诊断程序:
root@desktop:~# /usr/local/eGTouchARMwithX/eGTouchD
bash: /usr/local/eGTouchARMwithX/eGTouchD: No such file or directory
root@desktop:~# ls -l /usr/local/eGTouchARMwithX/eGTouchD
-rwxr-xr-x 1 root root 198870 Jul 19 14:11 /usr/local/eGTouchARMwithX/eGTouchD
root@desktop:~# file /usr/local/eGTouchARMwithX/eGTouchD
/usr/local/eGTouchARMwithX/eGTouchD: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
root@desktop:~# uname -a
Linux desktop 3.2.0-1415-omap4 #20-Ubuntu SMP PREEMPT Mon Jun 18 19:03:59 UTC 2012 armv7l armv7l armv7l GNU/Linux
root@desktop:~# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0x1266f80916e3e59eb001459610510f5d05630297, stripped
root@desktop:~# ldd /usr/local/eGTouchARMwithX/eGTouchD
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
我唯一的提示是file
将此文件报告为动态链接的可执行文件,而ldd
将其报告为不是动态可执行文件。
任何想法文件可能有什么问题以及如何解决这个问题?
尽管体系结构相同,并且此消息通常表明二进制文件适用于外部体系结构,但此消息的真正含义是它链接到不兼容的 C 运行时库。
在 Linux From Scratch 上查看此消息网站。在他的情况下,升级 glibc 给了他几个(但不是全部)命令的错误。
您需要安装与二进制文件匹配的正确 C 运行时库,或者获取与您的 C 运行时库匹配的二进制文件。