Crosstool-NG制作GNU工具链
admin
2024-02-12 09:39:36

在说正事之前先讲下automake autoconf这一套东西。

目前在网上找到的开源工具之类的项目,绝大多数都可能在编译之前执行./configure

这个脚本后面可能会带各种各样的参数。如果就是针对本机进行编译还好,如果是进行交叉编译,可能还需要带各种各样的参数,提前设好各种路径的环境变量。

常见的例如:
--host=交叉gcc的前缀(就是host 工具链的名字)
--with-sysroot=目标文件系统根目录路径或者GCC 工具链里面提供的头文件和libc等库的路径。
--prefix 安装路径。
环境变量LIBS PKG_CONFIG_PATH 等。
需要引用交叉编译工具链,实现环境和编译上位机的隔离。防止在编译arm的应用时引用到x86linux 的库和环境 头文件。这样容易出现各种各样的编译错误。

需要注意的是,configure和Make file都是各个库和工具 的作者自己写的,有一定的规范习惯但是并没有标准,所以每个都不一样!!!

具体需要仔细查看help内容。

在./configure的时候,会检查当前的环境并生成MAKEFILE。如果是纯纯的应用交叉编译可能还好,如果是和target系统内核之类的相关的工具编译,那可能会太麻烦了。

在遇到问题的时候,需要检查config.log及生成的Makefile及编译过程中的log。

如果编译能够成功,并且可以运行。GOOD LUCK!


如果想尝试在板子里编译,但是板子里没有编译环境。
(这条路我最终也放弃了,因为板子里的环境实在是太乱,哪怕我有了C库 头文件和GCC,但是还是会缺少各种其他的库)。

可以使用Crosstool-ng制作编译工具。

值得注意的点

  1. ct-ng 是基于make的工具 ct-ng -h实际上是用了make -h 。所以要看真正的help 需要 ct-ng help
  2. 跟上面这个一样 在编译linux 源码的时候。看makefile 的help. 是make help
  3. 在menuconfig中配置工程路径,有tar source, build 路径, prefix三种要配置。分别对应工具拉取要编译的源码,编译过程中产生的文件,安装工具链的路径。
  4. 上面那个build路径不能命名为build, 否则ct-ng build会告诉你 build is up to date。他会以为你是去执行文件夹下编译而不是编译Makefile中的build
  5. 在Crosstool-NG网站的文档中有Toolchain Types这一节,讲了build target host 的关系。生成ARM->ARM这种编译器属于是cross-native类型,属于是加拿大类型的特例。加拿大类型是指build target host都不相同。
  6. 加拿大型制作工具链的策略是,先生成当前环境下的交叉工具链,再用交叉工具链生成host下编target的工具链。make之类的所谓伙伴工具也会编译出来,可以在menuconfig里勾选。
  7. 在实际操作中,发现如果有类似linaro的x86->arm交叉编译工具,似乎不在需要第一次编译交叉工具了,在加拿大型勾选后产生的HOST工具配置项中HOST名字那里填写交叉工具链的host名,(三个填空里的第一个,help里面会说 usually你会不会空着)。例如aarch64-none-linux-gnu。实际上就是gcc的前缀。
  8. 在Crosstool-NG里面他去获取源码包的路径是固定的,可能人家的源已经失效了(在糟糕的网络环境下经常发生).可以器github之类的上面看issue,可能有好心人给了tar的下载地址。然后可以手动下载到前面设置好的路径下。程序执行ct-ng source 或者ct-ng build就可以了。

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...