这篇文章主要记录一下自己编译 交叉编译链工具的过程。其实很多工作都是别人已经帮我们做好了的,我只是使用一下别人做好的工具。

编译的过程中,主要使用到的工具是: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文件里面,就可以知道到底哪错了。

自己动手编译交叉编译链相关推荐

  1. keil git 编译文件_交叉编译链下的Makefile(STM32F4xx)

    文章围绕makefile文件的编写方式,向读者讲述如何在ubuntu平台上用交叉编译链 arm-none-eabi- 编译出 STM32F4xx 系列 MCU 的执行文件.文章核心在于讲述 arm-n ...

  2. linaro gcc 交叉编译链编译

    linaro gcc 交叉编译链编译全解析 在此编译的是4.8.3版本的gcc,依赖2.18的glibc,2.24的binutils 参考http://blog.chinaunix.net/uid-2 ...

  3. Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  4. Linux 之八 完整嵌入式 Linux 环境及构建工具、(交叉)编译工具链、CPU 体系架构

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  5. gcc mips64编译后无法运行在octeon上运行_编译工具链

    软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...

  6. 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链

    本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...

  7. ARM 编译工具链详解

    ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...

  8. 自定义NDK交叉编译链(toolchain)

    背景:在Mac下编译FFmpeg库时,看了比较多的教程基本都失败,偶然间发现NDK在去GCC化,需要通过交叉编译来完成编译,这里记录下NDK交叉编译链过程 地址 https://developer.a ...

  9. 如何选取 android 系统上的编译工具链

    https://mdgsf.github.io/2020/07/23/miscellanea-cpu/ 先介绍一些基础背景知识. Intel. 我们一般买的电脑都是 Intel 的 CPU. AMD. ...

最新文章

  1. MySQL数据库高可用集群搭建-PXC集群部署
  2. Matlab学习笔记——二进制文件的读写
  3. python画曲线图例-Python数据可视化之Matplotlib(折线图)
  4. MyEclipse 2017软件安装教程
  5. 打印机更换感光鼓单元k_干货,激光打印机常见故障维修方法总结
  6. 【转载】asp.net中弹出确认窗口(confirm),实现删除确认的功能
  7. Codeforces Round #628 (Div. 2)C - Ehab and Path-etic MEXs
  8. 关于web中的自适应布局
  9. windows安装python3步骤_windows下python3第三方库安装方法总结
  10. linux操作字符串、文本常用命令总结
  11. c语言 万年历实验流程图,万年历算法(万年历算法流程图)
  12. 大数据爬虫前奏之Html和Css学习
  13. 局域网桌面共享软件(优化版)
  14. 理解算法中的时间复杂度,O(1),O(n),O(log2n),O(n^2)
  15. PVE安装画面灰白只显示鼠标解决方案
  16. w ndows安装,Win7旗舰版Wndows Virtual PC虚拟机安装教程.doc
  17. Redirected Walking
  18. HDU 6045 Is Derek lying?
  19. pytorch中tensor转numpy
  20. 3d打印打印头heating failure报错

热门文章

  1. 珠城科技在创业板上市:IPO首日跌破发行价,市值相对蒸发约7亿元
  2. 有关计算机知识的活动总结,计算机兴趣小组活动总结范文
  3. PanGu STM32MP1开发环境搭建
  4. 电容电阻电感在电路中的作用
  5. 常见的监控摄像机的取流格式
  6. Windows10+Ubuntu双系统安装[多图]
  7. 盈利超预期+追加10亿美元股票回购计划,是时候重估欢聚集团的价值
  8. 电子工程师名片——UFI Command,USB盘符的显示
  9. swf无法在html播放器,错误? FlashPlayer 10根据SWF/HTML播放器设置,投影机无法进入全屏...
  10. Ideas for Snap to grid