当前位置: 技术问答>linux和unix
基于MIPS处理器的交叉编译环境如何建立啊?
来源: 互联网 发布时间:2015-11-13
本文导语: 第一次接触MIPS处理器的Linux开发,现在还没上手。我用板子用的ADM5120P的处理器,AMD的AM29LV320的flash。现在想要编译内核和应用程序,但是交叉编译环境不知道怎样建立。MIPS版的Linux内核源码已经有了,还有以下这些...
第一次接触MIPS处理器的Linux开发,现在还没上手。我用板子用的ADM5120P的处理器,AMD的AM29LV320的flash。现在想要编译内核和应用程序,但是交叉编译环境不知道怎样建立。MIPS版的Linux内核源码已经有了,还有以下这些东西:
toolchain-20020423-1.i386.rpm
toolchain-i386-20020423-1.i386.rpm
toolchain-mips-20020423-1.i386.rpm
toolchain-mipsel-20020423-1.i386.rpm
还有一个mipsel-linux-uclibc文件夹
现在我装了这四个rpm包。然后在/export/tools/bin 目录下找到了mipsel-linux-gcc这个程序,这应该是mips版的gcc吧。之后就进行不下去了。哪位知道下面如何设置交叉编译环境啊?或者有详细的设置文档能否给我发一份,我在教育网,上google搜出来的那些国外网站不方便。多谢啦。我的邮箱:congwen@gmail.com
另外,我在一台windows平台的PC机上运行了tftp服务端的程序,假设该PC的IP为:192.168.1.2,从普通的linux机器上用#tftp 192.168.1.2 就可以tftp到这台PC上。我的mips板子用串口通过超级终端连到这台windows平台pc上,再用一个交叉线连接PC的网口和板子的网口,在超级终端上ping PC的IP可以通,但是在超级终端上用#tftp 192.168.1.2 却无法连上。
显示如下:
#tftp 192.168.1.2
BusyBox v1.00-pre7 (2004.06.03-05:30+0000) multi-cal binary
Usage: tftp [OPTION]... HOST [PORT]
#
这是为什么?还要设置什么吗?
toolchain-20020423-1.i386.rpm
toolchain-i386-20020423-1.i386.rpm
toolchain-mips-20020423-1.i386.rpm
toolchain-mipsel-20020423-1.i386.rpm
还有一个mipsel-linux-uclibc文件夹
现在我装了这四个rpm包。然后在/export/tools/bin 目录下找到了mipsel-linux-gcc这个程序,这应该是mips版的gcc吧。之后就进行不下去了。哪位知道下面如何设置交叉编译环境啊?或者有详细的设置文档能否给我发一份,我在教育网,上google搜出来的那些国外网站不方便。多谢啦。我的邮箱:congwen@gmail.com
另外,我在一台windows平台的PC机上运行了tftp服务端的程序,假设该PC的IP为:192.168.1.2,从普通的linux机器上用#tftp 192.168.1.2 就可以tftp到这台PC上。我的mips板子用串口通过超级终端连到这台windows平台pc上,再用一个交叉线连接PC的网口和板子的网口,在超级终端上ping PC的IP可以通,但是在超级终端上用#tftp 192.168.1.2 却无法连上。
显示如下:
#tftp 192.168.1.2
BusyBox v1.00-pre7 (2004.06.03-05:30+0000) multi-cal binary
Usage: tftp [OPTION]... HOST [PORT]
#
这是为什么?还要设置什么吗?
|
makefile里应该有让你配变量××prefix的选项,是不是make config记不清了。总之需要把这个prefix配置为"mipsel-linux-"
此外可能还需要在环境变量PATH里添加mipsel-linux-gcc所在的路径
你那个busy box的tftp我还不知道,不过看起来像是命令格式不正确。
此外可能还需要在环境变量PATH里添加mipsel-linux-gcc所在的路径
你那个busy box的tftp我还不知道,不过看起来像是命令格式不正确。
|
tftp应该是没有保持连接概念的,它的连接始于文件传输请求,终止于文件传输结束或出错。
通常tftp命令都是类似于以下格式
tftp [transition mode] [get/put] host source_file_name [dest_file_name]
这样一次性处理文件传输,而不是像ftp那样可以先连接到主机,权限许可时还可以list看看有什么文件在服务器上等各种操作。
win和busybox的tftp属于以上两种原始方式。
linux的tftp客户端看起来比较强,模拟ftp连接的样式,实际上并不是真正地可以先连接远端服务器,只是在本地存储了相关信息(远端服务器地址),在get/put文件时才真正地发起一个连接请求。你可以尝试在linux下tftp一个并不存在地主机,然后用status命令看看,它会显示已经连接成功,证明这不过是虚假信息而已。
通常tftp命令都是类似于以下格式
tftp [transition mode] [get/put] host source_file_name [dest_file_name]
这样一次性处理文件传输,而不是像ftp那样可以先连接到主机,权限许可时还可以list看看有什么文件在服务器上等各种操作。
win和busybox的tftp属于以上两种原始方式。
linux的tftp客户端看起来比较强,模拟ftp连接的样式,实际上并不是真正地可以先连接远端服务器,只是在本地存储了相关信息(远端服务器地址),在get/put文件时才真正地发起一个连接请求。你可以尝试在linux下tftp一个并不存在地主机,然后用status命令看看,它会显示已经连接成功,证明这不过是虚假信息而已。
|
ucLibc 的 toolchain 是我至今为止找到的最完善的 toolchain.
http://www.uclibc.org/toolchains.html
仔细看一下吧。
http://www.uclibc.org/toolchains.html
仔细看一下吧。
|
这是建立arm交叉编译时的环境,照着做就行了
change to root user
cd /usr/local
tar zxvf usr-local-arm-kernel-headers-030528.tar.gz
tar zxvf usr-local-arm-gcc-030528.tar.gz
edit /etc/ld.so.conf and put /usr/local/lib at the top
run ldconfig -v
prepend /usr/local/bin, /usr/local/arm/bin, /usr/local/qtopia/bin, /usr/local/arm/qtopia/bin directories to PATH(vi /root/.bash_profile)
change to root user
cd /usr/local
tar zxvf usr-local-arm-kernel-headers-030528.tar.gz
tar zxvf usr-local-arm-gcc-030528.tar.gz
edit /etc/ld.so.conf and put /usr/local/lib at the top
run ldconfig -v
prepend /usr/local/bin, /usr/local/arm/bin, /usr/local/qtopia/bin, /usr/local/arm/qtopia/bin directories to PATH(vi /root/.bash_profile)