Firefly开源社区

标题: arm-linux交叉编译工具链的制作(firefly-RK3399) [打印本页]

作者: 憨豆爱上笨笨    时间: 2018-7-26 16:16
标题: arm-linux交叉编译工具链的制作(firefly-RK3399)
一、        安装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位.。http://blog.sina.com.cn/s/blog_7880d3350102wvrv.html(进一步下载适合版本64位)
问题2:由于可执行文件的访问权限问题,在RK-3399上需要扩展权限
chmod +x 可执行文件(正在研讨更优方法,现在尝试挂载的方法)

作者: lkw1898    时间: 2018-7-31 17:14
学习了,谢谢
作者: 张雅男    时间: 2018-10-24 13:17
很有用
作者: 张雅男    时间: 2018-10-25 15:46
谢谢大神
作者: fnger@163.com    时间: 2019-4-3 21:18
编译工具链和板卡型号有关系吗  我的是RK3288 linux ,能用你的例子吗
作者: rk3399初学者    时间: 2019-4-22 22:01
谢谢
作者: dect    时间: 2019-6-14 14:10
123




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1