自己动手编译交叉编译链
这篇文章主要记录一下自己编译 交叉编译链工具的过程。其实很多工作都是别人已经帮我们做好了的,我只是使用一下别人做好的工具。
编译的过程中,主要使用到的工具是:crosstool-ng
编译的流程主要是:
1、先编译安装 crosstool-ng
2、配置 crosstool-ng
3、crosstool-ng 这个工具就把剩下的工具都帮你做了。 //crosstool-ng做剩下的工作的时候,需要有网络,如果没有网络,比较麻烦,后面会说。
编译安装 crosstool-ng 的流程:
1、去官网下载源码包。官网链接:http://crosstool-ng.github.io/download/ 通过git可以直接下载:git clone https://github.com/crosstool-ng/crosstool-ng
2、通过git直接下载后,进入 crosstool-ng 目录。里面有个README.md 文档。可以阅读它。它会告诉你,叫你去这个网址 http://crosstool-ng.github.io/docs/ 这个网址会告诉你怎么配置安装。
3、进入这个网址后,发现是英文。没什么太大的问题啦。用Google 浏览器打开,翻译成中文,啥都搞定啦。
4、接下来就是配置了。//如果你不看网址的介绍,就继续看。建议看网址里面的介绍,它介绍的肯定比我好。
先运行 :./bootstrap
会生成 :.configure 文件。
然后运行 :./configure --prefix=/some/place //注:/some/place 这个路径就是你想把 crosstool-ng 这个工具安装在哪里的路径
接着运行 :make //make的时候,会需要一些依赖包,提示什么就安装什么。如果它提示需要libtool,你又安装了,那么你再安装一个libtool.bin就行了。
主要安装:apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \
python-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \
patch libstdc++6
最后运行 :make install
5、这个时候,你去你安装路径(就是第四步指定的 /some/place)下面的 bin文件目录下,会发现一个 ct-ng 文件,这个文件就是 crosstool-ng 这个工具的可执行文件。
6、导入环境变量,让你可以使用 ct-ng 这个可以执行程序。 //环境变量设置后,如果你 输入 ct- 按table键,能补全ct-ng,说明导入环境变量成功。
到了这里,完成了一半了。
接下来,你新建一个目录,随便建那里。
1、比如在建了 /arm-tool 这样一个目录。
2、我们回到 crosstool-ng 的根目录下。会找到一个 samples 目录,进入samples目录。在里面可以看到很多的目录。根据目录的意思,你大致就知道你要用哪个了。我的板子是armv7。那么我就用armv7这个对应目录里面的东西。
3、复制armv7目录里面的东西到 /arm-tool 目录里面。
4、进入 /arm-tool 目录
5、将 crosstool.config 文件复制一份,命名为 .config //就是执行这个命令: cp crosstool.config .config
6、执行命令: ct-ng menuconfig 这个时候,弹出一个界面,我们只需要在这个界面里面设置就行了。
1、进入:Paths and misc options --->
2、Local tarballs directory //我这里在第六行,设置这个东西 这个东西意思就是,你本地的源码在哪里。后面编译的时候,到这个地方找源码
3、Prefix directory //我这里在第十行设置这个东西, 这个东西的意思就是,你编译好的东西,我给你放哪里
然后退出
4、进入:Target options --->
5、设置: Target Architecture 为 (arm)
6、设置 Emit assembly for CPU 和 Use specific FPU 这两项要根据你的硬件进行匹配。
7、进入:Toolchain options --->
8、设置:Tuple's vendor string //设置这个,没什么实际的作用。可能能区分一下编译链。
设置了,你的编译就是 arm-lqd-linux......这样的
9、设置:Tuple's alias //设置这个,就是给你的编译链取个别名,它会软连接到实际的编译链上去。
10、进入:Operating System --->
11、设置:Version of linux //这里就是设置你的linux版本。不知道设置这个有什么用。即使版本不匹配,好像照样能用。
到了这里,基本就差不多了,然后保存,退出。
最后执行:ct-ng build 程序就开始编译了。
程序会自动去网上下载源码,这个过程比较慢。//注:这个时候,如果你的电脑没网的话,那么它会一直检索。
没有网络的解决办法:
你会看到程序运行的时候,会提示说在检索什么什么。这个时候,你可以把它需要的这个东西,自己从网上下载下来,然后把压缩包然后我们第2步指定的源码目录下。然后它会自动的去解压。
注:程序需要的源码,有个对应的版本号,这个版本号是可以配置的。我这里只修改了内核版本,其他的没有修改,使用的是默认的版本。
程序编译好后,会在我们第3步指定的目录里面。目录里面有个bin目录,里面就是我们需要的交叉编译链了。
如果出错了,编译的目录下有个build.log,你把错误信息复制到这个log文件里面,就可以知道到底哪错了。
自己动手编译交叉编译链相关推荐
- keil git 编译文件_交叉编译链下的Makefile(STM32F4xx)
文章围绕makefile文件的编写方式,向读者讲述如何在ubuntu平台上用交叉编译链 arm-none-eabi- 编译出 STM32F4xx 系列 MCU 的执行文件.文章核心在于讲述 arm-n ...
- linaro gcc 交叉编译链编译
linaro gcc 交叉编译链编译全解析 在此编译的是4.8.3版本的gcc,依赖2.18的glibc,2.24的binutils 参考http://blog.chinaunix.net/uid-2 ...
- Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具
最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...
- Linux 之八 完整嵌入式 Linux 环境及构建工具、(交叉)编译工具链、CPU 体系架构
最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...
- gcc mips64编译后无法运行在octeon上运行_编译工具链
软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...
- 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链
本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...
- ARM 编译工具链详解
ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...
- 自定义NDK交叉编译链(toolchain)
背景:在Mac下编译FFmpeg库时,看了比较多的教程基本都失败,偶然间发现NDK在去GCC化,需要通过交叉编译来完成编译,这里记录下NDK交叉编译链过程 地址 https://developer.a ...
- 如何选取 android 系统上的编译工具链
https://mdgsf.github.io/2020/07/23/miscellanea-cpu/ 先介绍一些基础背景知识. Intel. 我们一般买的电脑都是 Intel 的 CPU. AMD. ...
最新文章
- MySQL数据库高可用集群搭建-PXC集群部署
- Matlab学习笔记——二进制文件的读写
- python画曲线图例-Python数据可视化之Matplotlib(折线图)
- MyEclipse 2017软件安装教程
- 打印机更换感光鼓单元k_干货,激光打印机常见故障维修方法总结
- 【转载】asp.net中弹出确认窗口(confirm),实现删除确认的功能
- Codeforces Round #628 (Div. 2)C - Ehab and Path-etic MEXs
- 关于web中的自适应布局
- windows安装python3步骤_windows下python3第三方库安装方法总结
- linux操作字符串、文本常用命令总结
- c语言 万年历实验流程图,万年历算法(万年历算法流程图)
- 大数据爬虫前奏之Html和Css学习
- 局域网桌面共享软件(优化版)
- 理解算法中的时间复杂度,O(1),O(n),O(log2n),O(n^2)
- PVE安装画面灰白只显示鼠标解决方案
- w ndows安装,Win7旗舰版Wndows Virtual PC虚拟机安装教程.doc
- Redirected Walking
- HDU 6045 Is Derek lying?
- pytorch中tensor转numpy
- 3d打印打印头heating failure报错
热门文章
- 珠城科技在创业板上市:IPO首日跌破发行价,市值相对蒸发约7亿元
- 有关计算机知识的活动总结,计算机兴趣小组活动总结范文
- PanGu STM32MP1开发环境搭建
- 电容电阻电感在电路中的作用
- 常见的监控摄像机的取流格式
- Windows10+Ubuntu双系统安装[多图]
- 盈利超预期+追加10亿美元股票回购计划,是时候重估欢聚集团的价值
- 电子工程师名片——UFI Command,USB盘符的显示
- swf无法在html播放器,错误? FlashPlayer 10根据SWF/HTML播放器设置,投影机无法进入全屏...
- Ideas for Snap to grid