摘要:在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开发板成功。

linux第三方程序移植的更多相关文章

  1. 嵌入式linux应用程序移植方法总结

    嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...

  2. 【转】将 Linux 应用程序移植到 64 位系统上

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...

  3. UNIX/Linux C 程序员需要掌握的七种武器

    我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练 ...

  4. 嵌入式linux应用程序调试方法

    嵌入式linux应用程序调试方法 四 内存工具 五 C/C++代码覆盖.性能profiling工具 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来 ...

  5. Linux64位程序移植

    1 概述 Linux下的程序大多充当服务器的角色,在这种情况下,随着负载量和功能的增加,服务器所使用内存必然也随之增加,然而32位系统固有的4GB虚拟地址空间限制,在如今已是非常突出的问题了:另一个需 ...

  6. STM32F429 LCD程序移植

    STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...

  7. Android如何做到应用程序图标隐藏,由第三方程序启动

    在你App的AndroidManifest.xml中,将启动页做如下修改 <intent-filter> <action android:name="android.int ...

  8. 第六章第一个linux个程序:统计单词个数

    第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数.  第 1 步:建立 Linu x 驱 ...

  9. Linux C程序内存空间

    linux下内存空间布置: 一个典型的Linux C程序内存空间由如下几部分组成: 代码段(.text).这里存放的是CPU要执行的指令.代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段 ...

随机推荐

  1. bigdecimal 保留小数位

    public class test1_format { public static void main(String[] args) { BigDecimal decimal = new BigDec ...

  2. 解决protobuf不能直接在IOS上使用,利用protobuf-net在IOS上通讯

    ---------------------------------------------------------------------------------------------------- ...

  3. mvc导出excel 之 新

    前段时间做的mvc导出excel 老大说要进行优化,我原来导出是用npoi插件进行导出,格式是将数据放入到datatable中,然后进行导出. 说要优化的时候就想着将datatable数据导出格式改为 ...

  4. SharePoint 2013 中的 PowerPoint Automation Services

    简介                许多大型和小型企业都将其 Microsoft SharePoint Server 库用作 Microsoft PowerPoint 演示文稿的存储库.所有这些企业在 ...

  5. BSTR 的奥秘

    初学COM,总觉得BSTR很神秘,对于这种新的数据类型,总有很多疑问,那么BSTR到底是什么类型呢? 我们可以在头文件中的定义中最终找到 wchar这个类型被定义为BSTR,那么BSTR是wchar吗 ...

  6. java 实现一个简易计算器

    import java.util.Scanner;public class Test { public static void main(String[] args) { count(); } pub ...

  7. C#队列

    队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表.把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front).当对列中没有数据元素时称为空对列( ...

  8. Ajax学习心得

    Ajax学习心得 大致学了下Ajax,才知道它不是某种编程语言,而是一种在无需加载整个页面的情况下能够更新部分网页的技术.了解了它的功能后觉得这真是一种好的技术,这得给前端和运维省多少力啊! 传统的网 ...

  9. 查看外网出口IP && Traceroute

    一.CentOS 查看外网出口IP 1---------------- # curl ifconfig.me 2----------------# curl icanhazip.com 二.Trace ...

  10. 【转】Unity3d + NGUI 的多分辨率适配

    原文地址:http://www.cnblogs.com/cqgreen/p/3348154.html   一.当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率分析报告”) 1.1 iOS ...