300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > powerpc linux交叉编译器 PowerPC交叉编译环境(powerpc-linux-gcc)设置

powerpc linux交叉编译器 PowerPC交叉编译环境(powerpc-linux-gcc)设置

时间:2023-07-24 12:03:28

相关推荐

powerpc linux交叉编译器 PowerPC交叉编译环境(powerpc-linux-gcc)设置

为了在制作的mpc8360e处理器板上移植U-Boot,linux kernel,需要交叉编译环境,将使用过的方法总结如下,并简单给出中间曾经遇到的问题.

开发主机PC用过redhat9及Gentoo linux. 嵌入式板采用mpc8360e处理器,属于mpc83xx系列. MPC8349E-mITX板处理器mpc8349e亦属mpc83xx系列。

A: 交叉编译环境设置的四种简单方法:

A_1. 安装ELDK (Embedded Linux Development Kit)

说明主页:

说明: 操作主机为Gentoo linux. 在Gentoo中安装ELDK,必须安装rpm命令和相应的库.(emerge -av app-arch/rpm)

A_1.1 下载ELDK镜像ISO文件

# lftp ## 浏览下载ppc--04-01_freescale.iso

lftp> cd 4.2/ppc-linux-x86/iso

lftp> get ppc--04-01_freescale.iso

lftp> quit

A_1.2 挂载镜像文件

# mount -o loop -t iso9660 ppc--04-01_freescale.iso /mnt/cdrom

! 浏览器打开其中的README.html,阅读说明

A_1.3 以下为安装步骤

1.3.1 创建安装目录

# mkdir -p /opt/eldk

A_1.3.2 进入ISO镜像挂载目录

# cd /mnt/cdrom

A_1.3.3 根据说明(README.html)选择cpu_familly为ppc_6xx(支持mpc83xx),指定安装目录进行安装

# ./install -d /opt/eldk ppc_6xx

A_1.3.4 验证安装结果

$ /opt/eldk/usr/bin/ppc_6xx-gcc -v

A_1.4 安装成功后修改环境变量(或修改/etc/bash/bashrc)

# export CROSS_COMPILE=ppc_6xx-

# export PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin

A_1.5 测试编译

$ powerpc-linux-gcc -o hello hello.c

A_1.6 更新修改ELDK

由于ELDK制作滞后与U-Boot和内核kernel源码。根据需要可以删除或更新ELDK中自带的源码.

# cd /opt/eldk/ppc_6xx/usr/src

# rm -rf linux-2.6.24 linux-2.6.24-xenomai u-boot-1.3.1 linux

# ftp_get_kernel linux-2.6.30.5.tar.bz2

# tar -xjvf linux-2.6.30.5.tar.bz2

# ln -s linux-2.6.30.5 linux

A_2. 安装ltib

详见freescale LTIB使用总结使用总结(略)

A_3. 直接复制现有的ELDK环境

Gentoo主机A中如方法1中已经安装了ELDK4.2,将其现成的ELDK环境复制到Gentoo主机B中。

主机A中打包ELDK环境,上传至主机B中,如下操作:

[A]# cd /opt/

[A]# tar -czvf eldk.tar.gz eldk

[A]# ftp ip_addr_of_B

[A]> put eldk.tar.gz

主机B中安装A的目录和环境解包ELDK环境,修改环境变量,如下操作:

[B]# cd /opt/

[B]# mv ftp_dir/eldk.tar.gz /opt/

[B]# tar -xzvf eldk.tar.gz

[B]# export CROSS_COMPILE=ppc_6xx-

[B]# export PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin

A_4. 直接复制现有的ltib交叉编译环境

主机A(redhat9)中如方法2已经安装了ltib,将其现成的交叉编译环境复制到主机B(Gentoo)中。

主机A中如下操作:

[A]# cd /opt/freescale/

[A]# ls -l

[A]# tar -czvf powerpc-linux-gcc.tar.gz usr

[A]# ftp_put_B powerpc-linux-gcc.tar.gz

在主机B中如下操作:

[B]# mkdir -m 755 -p /opt/freescale/

[B]# cd /opt/freescale/

[B]# cp powerpc-linux-gcc.tar.gz .

[B]# tar -xzvf powerpc-linux-gcc.tar.gz

[B]# vim /etc/bash/bashrc

#export PATH=/opt/freescale/usr/local/gcc-3.4.3-uClibc-0.9.28-1/powerpc-linux/bin:$PATH

export PATH=/opt/freescale/usr/local/gcc-4.0.2-glibc-2.3.6-nptl-3/powerpc-linux/bin:$PATH

[B]# source /etc/bash/bashrc

[B]# powerpc-linux-gcc hello.c -o hello

测试交叉编译的程序,板子上操作:

mpc8349itx# ftpget -u liuby -p starby 59.64.155.122 hello hello

注意到方法4中修改环境时export语句的不同,两条语句(一个被注释,不起作用)对应不同交叉编译链(他们使用不同的库)。

下面给出嵌入式板中库与交叉编译链库的差异导致的问题:

说明: 嵌入式板mpc8349itx文件系统由ltib编译文件系统时选择了gcc-4.0.2-glibc-2.3.6-nptl-3生成.

mpc8349itx # ./a.out ## 使用uClibc的库(对应export gcc-3.4.3-uClibc-0.9.28-1)

-sh: ./a.out: not found

mpc8349itx # ftpget -u liuby -p starby 59.64.155.199 a.out a.out

mpc8349itx # ./a.out ## 使用uClibc的库,静态编译 -static

hello world

Segmentation fault

mpc8349itx # ftpget -u liuby -p starby 59.64.155.199 a.out a.out

mpc8349itx # ./a.out ## 使用glibc的库,正常。(对应 gcc-4.0.2-glibc-2.3.6-nptl-3)

hello world

以上说明交叉编译链可以正常工作

B. 使用交叉编译编译U-Boot, linux kernel:

B_1. U-Boot下载及编译:

B_1.1 下载U-Boot

网页浏览 点击snapshot下载。(注: 根据需要选择下载,一般可以浏览 点击snapshot下载最新的源码)

或者使用Git clone下载

B_1.2 解压U-Boot源码

$ tar -xzvf u-boot-mpc83xx-HEAD.tar.gz

B_1.3 编译U-Boot(mpc8349itx板)

$ cd u-boot-mpc83xx

$ make CROSS_COMPILE=ppc_6xx- mrproper

$ make CROSS_COMPILE=ppc_6xx- MPC8349ITX_config

$ make CROSS_COMPILE=ppc_6xx-

B_1.4 下载u-boot.bin

$ cp u-boot.bin ~/tftproot/

B_2. kernel下载及编译:

B_2.1 下载最新的stable的内核源码

网页浏览 选择Latest Stable Kernel内核,点击Download图标下载。

或者使用Git clone下载

B_2.2 解压内核源码

$ tar -xjvf linux-2.6.30.5.tar.bz2

B_2.3 编译kernel(mpc8349itx板)

$ cd linux-2.6.30.5

$ make distclean

$ make mrproper 保持源码`纯净'

$ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- oldconfig 使用当前目录下的.config做默认配置文件 [*]

$ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- mpc834x_itx_defconfig 使用arch/powerpc/configs/目录下的*_defconfig文件作默认配置文件 [*]

$ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- menuconfig 自己手动配置 [*]

! 说明: [*]表示的三个操作任选其一[oldconfig/mpc834x_itx_defconfig/menuconfig选其一]

$ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- uImage 真正编译内核

$ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- modules 编译模块

$ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- INSTALL_MOD_PATH=/opt/eldk/ppc_6xx/ modules_install 模块目录

B_2.4 下载uImage

$ cp arch/powerpc/boot/uImage ~/tftproot/

注: 上面四种方法提供的交叉编译链,方法A_4编译内核会报错.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。