争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

处理交叉编译到开发板不可用的问题

时间:2024/6/10作者:未知来源:争怎路由网人气:

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
最近换了一个电脑专门装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
这样最后编译出来即可运行。

Linux是一套免费使用和自由传播的类Unix操作系统



关键词:处理交叉编译到开发板不可用的问题




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版