在linux下构建交叉编译环境:
1. 安装 Crosstools-ng
下载Crosstoolshttp://crosstool-ng.org/download/crosstool-ng/ 用 ./configure 安装,可能会提示错误,按照错误提示安装依赖关系,其中makeinfo库存在于texinfo软件包中;curses.h存在于libcurses5-dev中。
安装完成后,不会自动将ct-ng程序添加到环境变量里,需要手动添加。ct-ng会列出命令选项
2.构建arm编译环境
运行 ct-ng menuconfig会出现图形化的配置界面。
进入 目标选项 一栏配置目标类型: 目标架构 选择arm,其他的根据需要选择
进入 操作系统 一栏配置目标系统: 在linux下可能没有目标计算机上安装内核版本,选择一个最接近的,即选择内核版本号与主修版本号相同的。
进入 二进制程序 一栏配置binutils:尽量选择高版本的
进入 C库 一栏配置C库版本:C库选择eglibc(嵌入式C库),版本尽量选择目标计算机使用的版本相同
进入 C编译器 一栏配置gcc版本:尽量选择最新版本,同时要编译C++的话,还要选择C++选项
其他的选项都按默认的就好,退出保存配置
然后运行 ct-ng build 构建工具链。此过程需要很长的时间,需要下载很多东西,所以最好单独建立一个目录。在构建的过程中可能会出错,一般为下载错误,很据提示手动下载需要的软件包放到 ~/.build/tarballs目录下,再次build,直到成功。
工具链构建成功后会在home目录下生成 x-tools目录里面有你配置的各种编译环境,arm的为 arm-unkonwn-linux-geabi目录,在里面的bin目录下就是我们熟悉的 gcc g++ 等命令,最好将bin路径存入环境变量,方便使用。
3.构建windows编译环境
与arm的类似,将目标架构设为x86,操作系统选择windows。有个小技巧,可以将arm下面~/.build/tarballs里的软件包复制到windows架构目录下,这样可以减少下载。