【背景】

手上有一个无线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的项目...相关推荐

  1. xscale linux内核编译,Building arm-linux toolchain for ARM/XSCALE

    4. Bootstrap compiler gcc Setup (1) kernel和库头文件 mkdir ${PRJROOT}/kernel make ARCH=arm menuconfig (选择 ...

  2. 杭电操作系统实验一 --- Linux内核编译及添加系统调用(arm架构华为云)

    实验要求  掌握Linux 内核的编译与安装 掌握Linux 系统调用基本概念 设计和添加linux系统调用 (1)修改或返回指定进程的优先级(nice值和prio值)(详见教材P328)提示:可能参 ...

  3. 树莓派-linux内核编译

    树莓派-linux内核编译 装虚拟机[^1] 配置共享文件夹 配置交叉编译工具 下载树莓派linux系统内核[^3] 树莓派等芯片带操作系统的启动过程 树莓派linux源码目录树 树莓派linux源码 ...

  4. linux内核编译如何选择cpu类型,Ubuntu内核编译和CPU Hot-Plug特性配置全过程及遇到问题记录...

    最近编译Palacios需要linux的内核支持cpu Hot-Plug(内存热插拔)特性,无奈我机器上安装的Ubuntu10.04系统默认不支持内存热插拔特性,所以需要修改配置文件并重新编译linu ...

  5. LINUX内核编译(ZT)

    LINUX内核编译(ZT) 在这里转贴一些关于内核编译的文章,绝非笔者原创,也无意注明出处.有些内容有重复之处,请原谅. ==================================== 一. ...

  6. 编译linux内核的错误,linux内核编译错误

    原标题:linux内核编译错误 内核版本:2.6.14 交叉编译器: -linux-gcc 4.3.3 错误: arch/arm/mm/alignment.c: In function 'proc_a ...

  7. 最小的linux内核编译,Linux最小内核移植

    class="markdown_views prism-github-gist"> Linux内核编译 本篇博客来自凌云实验室开发板介绍及其烧录学习笔记 1.内核介绍 一种开 ...

  8. Android Linux内核编译调试

    对于在Windows上写代码写习惯的人,调试是必不可少的手段,但是转到Android以后,发现调试手段异常简陋,跟Windows简直不是一个级别,特别是Android的内核调试,网上资料也相对较少,不 ...

  9. Linux内核编译基础

    2.6  Linux内核编译基础 当完成对Linux内核的配置以后,此时仍然以源代码的方式存在,不能直接下载到嵌入式系统中运行,因此,需要对内核进行编译,生成最终可以在嵌入式系统上运行的可执行代码. ...

最新文章

  1. windows 正在查找bash.exe
  2. Cisco 交换机配置端口镜像
  3. Fabric--启动网络手动
  4. python抓取数据库_Python-7.爬取大量数据存入数据库
  5. 不可错过!华为终端云服务带来Mate 20系列专属礼包
  6. mysql 命令查看帮助_Mysql使用命令分级查找帮助
  7. C51 printf修改如何能打印到不同的设备呢?
  8. Linux用户配置文件(第二版)
  9. html实现多窗口同时显示,如何使webstorm同时显示多个窗口?
  10. 普惠科技助力智能升级 天猫精灵新品直指家庭IoT生态
  11. Rockwell AB PLC 控制器EDS 更新下载更新方法
  12. 异速联服务器配置系统管理员,异速联V6.2.4.0正式版全新发布
  13. 几本适合嵌入式软件工程师阅读的电子入门书
  14. JS实现项目查找功能
  15. 阿里用回mysql_回mysql事务
  16. Codeforces 934C - A Twisty Movement (dp)
  17. UltraVNC(TightVNC、WinVNC)源码分析文档
  18. 《武则天正传》读后感
  19. java中如何实现多语言切换
  20. 如果一个女人喜欢你,又不跟你在一起,而且只跟你很暧昧,那代表什么

热门文章

  1. 如何清晰地思考:近一年来业余阅读的关于思维方面的知识结构整理(附大幅思维导图)
  2. Linux SSH密码暴力破解技术及攻防实战
  3. 马斯克回应特斯拉上海工厂克扣员工绩效奖;苹果版余额宝上线,年利率4.15%;Fedora 38 发布|极客头条
  4. Ubuntu下Pycharm切换中文输入法无法输入中文解决方法
  5. 数据中心低压配电系统能耗分析与PUE计算
  6. 完整体验了一次,微信7.0新开放的「亲属卡」功能
  7. 前端js实现路由切换页面 pushState replaceState
  8. Java复习总结之解析类的初始化顺序
  9. 用Python复制文件的9个方法(转)
  10. Excel中取值函数