摘要:在linux开发过程中经常需要用到第三方的程序,有时需要用到它们的库,有时需要它们生成的可执行文件,如何正确地编译这些第三方的程序,以方便地使用和开发自己需要的程序,将是本文要论述的内容.

1.移植第三方程序有几种情况

1.1 如果源码包有Makefile文件,直接改Makefile,修改CC, AS, LD, CFLAGS,INSTALL_PATH等。

1.2 源码包没有Makefile文件,但有configure/config文件:

1.2.1设置 CC, LD ,AS, LDFLAGS ,AR,RANLIB等环境变量,如下面的lrzsz命令移植中的

CC=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-gcc AR=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-ar LD=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-ld AS=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-as RANLIB=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-ranlib ./configure --host=arm-linux

指定交叉编译器路径,指定链接路径及AS,AR等。

1.2.2 make

1.2.3.make install

1.3 没有configure/config,也没有Makefile,但是会有一个autogen.sh脚本

1.3.1sh autogen.sh -->生成configure文件
1.3.2 再按照二做。

2.下面以移植lrzsz为例进行讲解:

2.1从网上下载lrzsz压缩包(http://download.chinaunix.net/download.php?ResourceID=6293&id=12772)

[weishusheng@localhost thirdparty]$ ls
lrzsz-0.12.20.tar.gz

2.2.解压

[weishusheng@localhost thirdparty]$ tar -xzf lrzsz-0.12.20.tar.gz
[weishusheng@localhost thirdparty]$ ls
lrzsz-0.12.20 lrzsz-0.12.20.tar.gz

2.3.进入lrzsz-0.12.20

2.4.生成Makefile文件

[weishusheng@localhost lrzsz-0.12.20]$ CC=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-gcc AR=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-ar LD=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-ld AS=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-as RANLIB=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-ranlib ./configure --host=arm-linux

2.5.

2.6.[weishusheng@localhost lrzsz-0.12.20]$ make

2.7.

2.8.我们看到lsz与lrz是在arm上运行的

2.9.把lsz,lrz下到开发板

先放到、tftp目录下

[weishusheng@localhost src]$ cp lsz lrz /tftp

在开发板上下载

>: tftp -gr lsz 192.168.1.3

>: tftp -gr lrz 192.168.1.3

修改权限

>: chmod 777 lsz lrz

2.10.测试

移植第三方程序lszrz成功。

3 tree程序移植到fl2440开发板

3.1.第一步同样从网上下载压缩包

3.2.解压

[weishusheng@localhost tree]$ tar -xzf tree-1.5.1.tar.gz
[weishusheng@localhost tree]$ ls
tree-1.5.1 tree-1.5.1.tar.gz

3.3.[weishusheng@localhost tree]$ cd tree-1.5.1

3.4.修改相关设置

[weishusheng@localhost tree-1.5.1]$ sudo vim Makefile

把CC=gcc

改为

CC=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-gcc

3.5.编译

[weishusheng@localhost tree-1.5.1]$ sudo make

3.6.上传到tftp服务器

[weishusheng@localhost tree-1.5.1]$ sudo cp tree /tftp

3.7.下载到开发板

3.8.测试

tree命令移植到fl2440开发板成功。