一、 安装crosstool-NG
1、 新建立一个目录arm-linux-tool,并且进入此目录。
2、 获取crosstool-NG源码
3、解压获取的打包文件crosstool-ng-1.20.0.tar.bz2。
4、配置并进行依赖检测:进入crosstool-ng-1.20.0目录中,运行。/configure –prefix
/home/ubunu/arm-linux-tools/crosstool-install/。(在这之前需要确定安装了gperf、bison、flex、texinfo、gawk、libtool、automake、libncurses5-dev、g++等软件)
在进行配置过程中出现如下错误,可清楚看出是版本过低。
进行软件的更新(失败),再进行libtool的安装如下所示:成功。
5、编译和安装
make
make install
6、配置环境变量以及检查crosstool-NG是否安装成功。
二、 配置交叉编译工具链
在crosstool-NG中有很多已经做好的默认配置(位于crosstool-ng-1.20.0/samples目录下),这里只需要进行修改就可以了。因为是制作arm-linux的交叉编译工具链,所以选择arm-unknown-linux-gnueabi进行配置。
1、 将arm-unknown-linux-gnueabi文件夹复制到crosstool-build目录下
2、将默认配置文件拷贝到crosstool-build目录下并改名为.config
cd ~/arm-linux-tools/crosstool-build
cp arm-unknown-linux-gnueabi/crosstool.config .config
3、 执行ct-ng menuconfig进入配置界面进行配置
ct-ng menuconfig
(1)设定源码包路径和交叉编译器的安装路径
源码包路径:设置Paths and misc options下的Local tarballs
directory为/home/ubuntu/arm-linux-tools/src
交叉编译器的安装路径:设置Paths and misc options下的Prefix
directory为/home/ubuntu/arm-linux-tools/x-tools/${CT_TARGET}
(2)修改交叉编译器针对的架构
设置Target options下的Architecture level为armv4t
设置Target options下的Emit assembly for CPU为arm9tdmi
设置Target options下的Tune for CPU为arm920t
(以上这几个参数是如何得出来的,可以参考gcc的man手册。你可以在下载的gcc-4.9.1.tar.bz2解压后的文件夹中找到(gcc-4.9.1/gcc/doc/gcc.1)
执行以下命令打开gcc.1)
(3)设置编译时的并行进程数
1)设置Paths and misc options下的Number of parallel jobs为4
这个数值不宜过大,应该为CPU核心数量的两倍。
(4)设置编译器前缀
1)设置Toolchain options下的Tuple‘s vendor
string为RK3399,这样生成的编译器的前缀就是arm-RK3399-linux-gnueabi-
4、安装termcap
5、编译
在crosstool-build目录下执行以下命令进行编译
ct-ng build
6、根据以上可制作出交叉编译链(根据开发板配置)。
三、选用成熟的交叉编译器进行安装配置(亲自测可用)
1、 解压在/usr/local/tool/下
2、 配置环境变量 sudo etc/profile,将其路径写入最后一行,export
PATH=$PATH”“/usr/local/tool/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin”
3、 使其生效 source /etc/profile
4、 查看路径echo $PATH
5、 查看编译器安装是否成功
问题1:识别不了32位。。
问题2:由于可执行文件的访问权限问题,在RK-3399上需要扩展权限
chmod +x 可执行文件(正在研讨更优方法,现在尝试挂载的方法)
原作者:憨豆爱上笨笨