Ubuntu 64位系统安装32交叉编译器,出现如下错误:
错误原因:
直接到arm-linux-gnueabihf-g++这个bin文件下执行./arm-linux-gnueabihf-g++,提示No such file or directory.令我百思不得其解,即使这个二进制文件错误,也不应该提示这个错误呀,明明这个文件存在的。
废了好大劲儿,各种尝试,后来终于找到了错误-运行兼容linux standard base(LSB)程序问题。
有很多商业软件在发布时按照LSB规范来分发二进制。如果系统不符合LSB规范则这些程序都无法运行,比如下面这个过程
$ ./arm-linux-gnueabihf-g++
-bash: ./arm-linux-gnueabihf-g++: No such file or directory
查看文件存在
$ file ./arm-linux-gnueabihf-g++
./arm-linux-gnueabihf-g++: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
执行权限也正确
$ ls -lha ./arm-linux-gnueabihf-g++
-rwxr-xr-x 1 em em 854K Jun 8 20