linux下交叉编译器制作
目前我用的交叉编译器是TQ2440配套光盘中制作好了的,解压后需要如下配置:
在开发过程中,经常遇到-/bin/sh:xx(命令) not found的错误,一般情况下这种错误是缺少动态库造成的。在编译时也是需要相应的动态库的。
下面以libjpeg为例说明如何构建自己的交叉编译器。
1.首先下载libjpeg源码:libjpeg-turbo-1.2.1.tar.gz
2.解压源码:tar xzf libjpeg-turbo-1.2.1.tar.gz
3.进入源码目录:cd libjpeg-turbo-1.2.1
4.新建tmp目录,用于存放编译好的libjpeg文件:mkdir tmp
5.配置:./configure --prefix=/work/projects/13.libjpeg/libjpeg-turbo-1.2.1/tmp/ --host=arm-linux,其中--prefix用于指定编译到的目录,--host用于指定编译器
6.编译:make
7.安装:make install,安装完成后,在刚才创建的tmp目录下有bin、incluide、lib等目录
8.将编译出来的include目录下的所有文件拷贝到交叉编译工具的include目录下,我的是/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include/目录
9.将编译出来的lib目录下的所有so文件拷贝到lib目录下,我的是/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/目录
10.将编译出来的lib目录下的所有so文件拷贝到文件系统中,因为应用程序运行时需要相应的库。
自制交叉编译工具:
1.首先去http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/下载最新版本的交叉编译器。
2.安装,执行./arm-2014.05-29-arm-none-linux-gnueabi.bin,将交叉编译器安装到/opt目录下
3.安装完成后,到编译器的bin目录下,我的是/opt/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin目录,建立可执行脚本,只需对结尾是g++,gcc,gcc-4.8.3的命令添加,其他的命令用到时做成链接文件即可。
如:vim arm-linux-gcc
添加内容如下:
#!/bin/sh
arm-none-linux-gnueabi-gcc -march=armv4t $*
对于其他的命令如:ln -s arm-none-linux-gnueabi-ld arm-linux-ld
编译过程中如果出错,根据提示添加即可。
4.到此为止,简单的交叉编译器就做好了,在开发过程中用到的库和头文件需要自行添加
库文件放到:/opt/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi/libc/armv4t/lib
头文件放到:/opt/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi/libc/usr/include