Ubuntu 64系统执行二进制文件提示No such file or directory
来源:互联网 发布:mit sloan商学院 知乎 编辑:程序博客网 时间:2024/06/05 15:07
这几天想在Ubuntu 64位系统上配置高通801板子的交叉编译工具链,板子是linaro系统,armv7,32位,我的编译环境是Ubuntu16.04 LTS.
按照指定的步骤配置好g++编辑工具(arm-linux-gnueabihf-g++),make时提示command not found。
直接到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 2009 ./arm-linux-gnueabihf-g++
用LDD检查,无法查看内容
$ ldd ./arm-linux-gnueabihf-g++
/usr/bin/ldd: line 116: ./arm-linux-gnueabihf-g++: No such file or directory
也就是说有这么一个程序,束手无策。
这是因为这些程序在编译阶段和lsb的一坨东西绑在一起了,所以当缺失这些基本的库文件的时候根本不会知道出什么错误了。
一般来说通过lsb_release会检查出发行版对LSB的支持情况。在对LSB的支持态度上,Redhat、Debian这些发行版比较积极,Arch稍麻烦(好像AUR有lsb-core),而gentoo基本持批评态度,开发者态度也及其糟糕(可自行google gentoo lsb,很快就能找到一大堆战贴)
解决方案
------------------------------------------------------
Fedora/Debian/arch等
搜索lsb-core并安装就没有问题了apt-get upate apt-get install lsb-core
(虽然这类程序往往只“支持”RHEL),有了lsb-core后可以使用ldd+程序名可以很容易检查到缺失的库文件,安装缺失的依赖软件运行起来一般不会有问题。
对于这个交叉编译安装错误,用ldd查看得到
ldd ./arm-linux-gnueabihf-g++
linux-gate.so.1 => (0xf77a4000)
libstdc++.so.6 => not found
libm.so.6 => /lib32/libm.so.6 (0xf7731000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7714000)
libdl.so.2 => /lib32/libdl.so.2 (0xf770f000)
libgcc_s.so.1 => not found
libc.so.6 => /lib32/libc.so.6 (0xf755b000)
/lib/ld-linux.so.2 (0x5660e000)
在网上搜了下,大概是64位系统需要一个包,就安装了libc6-i386,$sudo apt-get install libc6-i386
安装完了还是不对,又提示新的错误,编译找不到 libstdc++.so.6 文件,到/usr/lib文件下看下有这个文件
一直在找资料,找了一天,在官方文件中发现有两个包包含这个文件
一个是libstdc++6
一个事lib32stdc++6
于是
问题顺利解决
- Ubuntu 64系统执行二进制文件提示No such file or directory
- ubuntu 64位的机器上执行arm-linux-gcc提示 no such file or directory
- Linux,执行.sh文件,提示No such file or directory
- Linux,执行.sh文件,提示No such file or directory
- Linux执行脚本却提示No such file or directory
- Linux下执行脚本提示No such file or directory
- shell环境,执行*.py 提示 No such file or directory
- Linux下执行脚本提示No such file or directory
- Linux执行可执行文件提示No such file or directory
- 在ubuntu 64位的机器上执行arm-linux-gcc提示 no such file or directory
- 在Ubuntu 64位机器上执行arm-linux-gcc命令提示无法加载库,no such file or directory
- 执行可执行文件时,系统提示No such file or directory的解决办法
- Ubuntu系统上脚本文件执行时报No such file or directory的问题
- rmmod 提示 No such file or directory
- ubuntu 64 提示 bash: no such file or directory 文件存在
- Ubuntu 12.04 alternate 64位 执行文件,显示:bash: ***: No such file or directory
- 64位系统执行32位程序报No such file or directory
- linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)
- Android开发教程(十三)乐学成语代码实现
- 删除链表中倒数第K个节点,
- 新博客地址
- 二维gabor特征及其实现
- Fragment理解2
- Ubuntu 64系统执行二进制文件提示No such file or directory
- 指针与链表。。。
- ArrayList和LinkedList各自实现和区别
- CSS——字体缩写
- Java 加载驱动程序的方法
- Android Studio配置SVN服务器
- hello Blog
- c++实践参考:两个成员的类模板(二)
- linux一步到位设定时间