代码改变世界

Ubuntu下交叉编译源码包

2012-11-01 10:56  Chung-shu  阅读(848)  评论(0)    收藏  举报

1、搭建交叉编译环境,可参考:Ubuntu下搭建MIPS交叉编译环境(转)

2、配置环境变量,可参考:Ubuntu设置环境变量(转)

3、进入源码包根目录下,运行./configure。

configure 命令有很多参数可配置,可以用./configure --help 来查看。在交叉编译过程中可设置--host,--target,--build这几个参数,如--host=mips-linux,--build=i686-pc-linux-gnu,--target=mips-linux。其中,build就是你正在使用的机器,host就是你编译好的程序可以运行的平台,target就是你编译的程序可以处理的平台。一般来说,我们平时所用的交叉编译用不到target,比如./configure --build=i386-linux --host=arm-linux就可以在386的平台上编译运行在arm板的程序了。因为一般我们都是编译程序,而不是编译编译工具,如果我们编译编译工具,比如gcc,这个target就有用了。如果我们需要在一个我们的机器上为arm开发板编译一个可以处理 mips程序的gcc,那么target就是mips了。

这些参数配置后,configure 时会读取源码目录下面的 config.sub 文件,查找、检查设置的参数是否支持,如mips架构是否支持、linux 操作系统是否支持等。./configure --prefix参数表示生成的库文件所安装的目录,默认的是在/usr/local目录下。其他参数含义可以通过./configure --help 来查看,configure 过程中若失败可通过查找config.log文件来查找出错原因。./configure --diabale-可以把源码包中的某个模块不配置,编译的时候也就不编译。

4、make。make 的过程如果前期配置了正确的环境变量并 configure 成功后一般都没遇到什么问题,具体问题具体解决,可以通过查看控制台打印出来的信息了解 make 的过程。

5、make install,主要是把生成的库文件、可执行文件等拷贝到合适的目录下,目标目录跟你./configure 时设置的--prefix 参数有关。

下面详细说明交叉编译iperf源码包到mips-linux平台的步骤:

1. 搭建交叉编译环境,由于iperf既有c代码也有c++代码,因此交叉编译环境要有c++编译工具,然后配置环境变量;

2. 下载iperf-2.0.5.tar.gz压缩包,解压

tar -zxvf iperf-2.0.5.tar.gz

3. 进入iperf-2.0.5目录,configure,configure的时候要设置相应的变量和配置参数

cd iperf-2.0.5
CC=mips-linux-gcc CXX=mips-linux-g++ AR=mips-linux-ar ./configure --host=mips-linux --prefix=/home/username/iperf-2.0.5/bin

4. 将iperf-2.0.5根目录下刚刚生成的config.h文件中的“#define malloc rpl_malloc”注释掉,然后将iperf-2.0.5/src目录下的Makefile文件中的“CFLAGS =  -O2 ”改为“CFLAGS =  -O2 -static”、“CXXFLAGS =  -O2 ”改为“CXXFLAGS =  -O2 -static”,然后make、make install

make
sudo make install

5. 在iperf目录的bin/bin文件夹里面可以得到iperf的二进制文件,将其下载到目标平台上即可使用。