Linux技巧

推荐列表 站点导航

当前位置:首页 > 服务器技术 > Linux技巧 >

解决交叉编译到开发板不可用的问题

来源:网络整理  作者:网友投稿  发布时间:2020-12-29 09:30
最近换了一个电脑专门装ubuntu后,和往常一样仍是装好arm-linux-gnueabi-gcc,arm-linux-gnueabi-g++和eclips e后,写好程序,交叉...

最近换了一个电脑专门装ubuntu后,和往常一样仍是装好arm-linux-gnueabi-gcc,arm-linux-gnueabi-g++和eclips e后,写好程序,交叉编译之后,在板上却显示:

-sh: ./a.out: No such file or directory

然后查看文件属性:

file a.out

显示如下:

a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=cfd57ddadc94410b1922a606b6c0e4fc7d6addee, not stripped

和之前同样的交叉编译过,但能在开发板上运行的文件比较了一下:

file sinfo 

显示如下:

sinfo: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=4769e11eda509ac1e6b52100af3f364229e7b534, not stripped

再看了自己的GNU/Linux版本:

uname -a

Linux colibri-imx6 4.1.41-rt50-dirty #3 SMP PREEMPT RT Sun Aug 27 17:20:09 CST 2017 armv7l GNU/Linux

这两个GNU/Linux和我的都不同,由于GNU/Linux版本的区别,这样很可能是因为动态编译的不同,导致开发板上缺少某个库,就无法运行该文件,故而显示No such file or directory。

 

解决方法:

在编译的时候,选择- static来进行静态连接,这样,所有需要的库全会编译进文件里,虽然文件会变得很大,但是可以不依赖板上的库运行。

只用在eclipse里,在编译的时候在gcc-link里面选择- static即可:

ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=8478b453a14004a4bc0338f990461b3416c05f63, not stripped

这样最后编译出来即可运行。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/server/jiqiao/10626.shtml

相关文章
Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

解决交叉编译到开发板不可用的问题

2020-12-29 编辑:网友投稿

最近换了一个电脑专门装ubuntu后,和往常一样仍是装好arm-linux-gnueabi-gcc,arm-linux-gnueabi-g++和eclips e后,写好程序,交叉编译之后,在板上却显示:

-sh: ./a.out: No such file or directory

然后查看文件属性:

file a.out

显示如下:

a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=cfd57ddadc94410b1922a606b6c0e4fc7d6addee, not stripped

和之前同样的交叉编译过,但能在开发板上运行的文件比较了一下:

file sinfo 

显示如下:

sinfo: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=4769e11eda509ac1e6b52100af3f364229e7b534, not stripped

再看了自己的GNU/Linux版本:

uname -a

Linux colibri-imx6 4.1.41-rt50-dirty #3 SMP PREEMPT RT Sun Aug 27 17:20:09 CST 2017 armv7l GNU/Linux

这两个GNU/Linux和我的都不同,由于GNU/Linux版本的区别,这样很可能是因为动态编译的不同,导致开发板上缺少某个库,就无法运行该文件,故而显示No such file or directory。

 

解决方法:

在编译的时候,选择- static来进行静态连接,这样,所有需要的库全会编译进文件里,虽然文件会变得很大,但是可以不依赖板上的库运行。

只用在eclipse里,在编译的时候在gcc-link里面选择- static即可:

ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=8478b453a14004a4bc0338f990461b3416c05f63, not stripped

这样最后编译出来即可运行。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/server/jiqiao/10626.shtml

相关文章

风云图片

推荐阅读

返回Linux技巧频道首页