最常用的编译版本是arm-linux-gcc-3.4.1 和 arm-linux-3.3.2 的,其中3.4.1的用于编译2.6的内核,而3.3.2的常用于编译busybox和bootloader。如果搭配编译的版本配合不好就会出错,所以要选择好编译版本。在uclinux上用的多的就是 arm-elf-tools-20030314。
下面开始设置过程:
1)下载arm-linux-gcc-3.4.1并解压,会得到一个包(arm包),放到/usr/local/下(其实自己想放哪里都行,自己愿意了)。
2)设置环境变量。把交叉编译器的路径加入到PATH。这里有三种方法, 我都说一下:
方法一:修改/etc/bash.bashrc文件
#vim /etc/bash.bashrc 在最后加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
export PATH
方法二:修改/etc/profile文件:
# vim /etc/profile 增加路径设置,在末尾添加如下,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin 注:(这只能在当前的终端下才是有效的!)
在设置完了后,就要是环境变量生效,当然可以重启使其生效,也可以在终端输入如下:
对应方法一:#source /root/.bashrc
对应方法二:# source /etc/profile 用echo $PATH 看看有没?
3)打开一个中断,输入arm-linux-gcc -v看到下边的就说明成功了
Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc- 3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu--prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm-linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix
gcc version 3.4.1
4)写个hello试试
#include <stdio.h> int main() { printf("Hello World!\n"); return 0; } 执行下面的命令: #arm-linux-gcc -o hello hello.c
然后再输入#file hello,会看到如下信息:
hello: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped
说明生成了一个可以运行在Arm体系结构上的应用程序。经过以上步骤,arm-linux-gcc开发环境就搭建好了.
5)在编译其他时有可能会用到3.3.2,可以用具体的路径指定 (/usr/local/arm/3.3.2/bin/arm-linux-)。
----------------------------------------
修改环境变量这一步修改/etc/profile文件
在path中添加arm-linux-gcc路径
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/arm/3.4.1/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi
再source /etc/profile就可以刷新环境变量
其他方式试过好像不行........