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

【背景】

手上有一个无线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,去编译当前的项目了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include "use.h" #include "Ver.H" #include #include #include #include "include.h" /******************************************************************* 1、菜单中这几个参数项需要读出和修改: P1中的:L,H,E,dr,P P2中的:Ed,SF,bo 一共7个参数项; ---这7个参数项不知道用什么命令来进行读写? 请你帮助考虑一下。 2、HART命令中,有如下命令应该要用到: ⑴ 0#命令---读标识码 (好像是个广播命令) ⑵ 3#命令---读主变量电流(测量值) ⑶ 6#命令---置随选地址(确定工作模) ⑷ 15#命令---读主变量输出信息(上下限值) ⑸ 40#命令---进入/退出电流模 ⑹ 41#命令---执行设备自检 ⑺ 42#命令---执行设备复位 ******************************************************************/ //前面的4个地址是固定的,后面一个是可以改的!用MP1.ADR 代替了! //#define adr0 0x02 //#define adr1 0x23 //#define adr2 0x34 //#define adr3 0x45 //#define MAX_0xff 5 //前导符的个数! //#define HART_VER 5 // 版本 //---------------------------------------------------------------------------------- //static unsigned char fHART_LONG_ADR=0; //=0 短地址标至;=1 是长地址! //static unsigned char cnt_0xff=MAX_0xff; //主机发送0XFF的个数,从机回复添加相同的个数 ! //************************************************************************** extern unsigned char cnt_0xff; //主机发送0XFF的个数,从机回复添加相同的个数 ! extern unsigned char fHART_LONG_ADR; //=0 短地址标至;=1 是长地址! //--------------------------------------------------------------------------------------------- unsigned char HART_Get_FF(unsigned char *p){ memset(p,0xff,cnt_0xff); return cnt_0xff;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值