300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > xscale linux内核编译 【记录】用交叉编译器arm-xscale-linux-gnueabi交叉编译一个

xscale linux内核编译 【记录】用交叉编译器arm-xscale-linux-gnueabi交叉编译一个

时间:2023-03-23 04:39:25

相关推荐

xscale linux内核编译 【记录】用交叉编译器arm-xscale-linux-gnueabi交叉编译一个

【背景】

手上有一个无线HART的源码,其是基于Eclipse的项目。

想要交叉编译该项目。

之前已经通过crosstool-ng弄出一个交叉编译器arm-xscale-linux-gnueabi了:

又交叉编译了,该项目所依赖的四个库:

此时,可以接着,基于Eclipse,去编译此项目了。

【折腾过程】

1.先要去修改原先的makefile。因为其中的很多路径,是之前别人的路径,此处要改为自己当前的路径。

2.突然发现,此处的Eclipse中该项目的makefile,中的很多路径,都是类似于:

/home/xxx/usr/local/armxscalecurl/bin

的路径,说明了:

此项目,是基于Linux平台下,Eclipse的项目。

所以,可以直接使用此种路径。

而当前我此处是:

win x64,在cygwin下弄出来的交叉编译器

所以,意味着:

无论是使用cygwin下的/cygdrive/xxx的路径 -> Win7下的Eclipse不支持

直接使用win7的路径,E:/xxx->Eclipse中的makefile,估计很多都无法运行,包括路径中,可能包括空格,以及此时调用的Makefile,是不是linux/cygwin下兼容的makefile

所以,目前看来,只能是去:

把代码拿到cygwin下,尝试在cygwin下面编译,或许最终可以编译成功。

3.把代码拷贝到cygwin下。

4.修改路径的时候,结果却发现,此项目还需要一个库libcgi,所以,再去继续交叉编译这个libcgi:

5.然后继续折腾。

改好了路径后,直接去make:

6.结果出错了:

按照同样的改法,以此把余下的,同样的错误,都改掉。

7.最后,就对于WBM,编译完成了,生成了arm的可执行文件:CLi@PC-CLI-1 ~/develop/wihart_gateway_6_0/WBM/Build

$ file xxx.exec

xxx.exec: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.19, not stripped

8.编译完成了WBM后,再去编译WHGS。

对应的,修改好路径后,去make编译。

9.结果出错:fatal error: log4c.h: No such file or directory

发现是原先的makefile中,没有添加log4c的include路径,所以去添加上:-I $(LOG4CROOTDIR)/include

然后再去make

10.然后解决了一堆,和之前一样的

error: lvalue required as unary ‘&’ operand

的问题后,一直编译到最后,结果是ld找不到我们此处的一些库:/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/lib/gcc/arm-xscale-linux-gnueabi/4.6.0/../../../../arm-xscale-linux-gnueabi/bin/ld: cannot find -lxmlrpc_client

/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/lib/gcc/arm-xscale-linux-gnueabi/4.6.0/../../../../arm-xscale-linux-gnueabi/bin/ld: cannot find -lxmlrpc

/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/lib/gcc/arm-xscale-linux-gnueabi/4.6.0/../../../../arm-xscale-linux-gnueabi/bin/ld: cannot find -lxmlrpc_util

/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/lib/gcc/arm-xscale-linux-gnueabi/4.6.0/../../../../arm-xscale-linux-gnueabi/bin/ld: cannot find -lxmlrpc_xmlparse

/home/CLi/develop/crosstool-ng/x-tools/arm-xscale-linux-gnueabi/lib/gcc/arm-xscale-linux-gnueabi/4.6.0/../../../../arm-xscale-linux-gnueabi/bin/ld: cannot find -lxmlrpc_xmltok

所以,看来需要去添加lib的路径。

结果发现是自己把XMLRPCROOTDIR误写为了LIBXMLROOTDIR,所以导致路径设置有误,没有找到上述的xmlrpc的库。

11.改了后,再去编译,结果可以找到xmlrpc库,但是又出现其他错误:

然后就编译完成了。

12.去看看最后生成的文件:CLi@PC-CLI-1 ~/develop/wihart_gateway_6_0/WHGS/Build

$ file xxxMainApp

xxxMainApp: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.19, not stripped

的确是可以正常的生成了arm的app了。

【总结】

至此,看来是,可以通过交叉编译器arm-xscale-linux-gnueabi,去编译当前的项目了。

xscale linux内核编译 【记录】用交叉编译器arm-xscale-linux-gnueabi交叉编译一个基于嵌入式Linux的无线HART的项目...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。