Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7277
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 62
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-29 15:58
个人简介

只做我喜欢做的事

文章分类
文章存档

2015年(5)

我的朋友

分类: 嵌入式

2015-03-29 20:25:49

交叉编译应用程序

(参考韦东山20141030_交叉编译应用程序.WMV)

 

arm-linux-gcc –o hello hello.c

默认头文件目录:工具链里的include目录 (include/stdio.h)

默认库文件目录:工具链里的lib目录     (文件最多的lib目录)

 

gcc –o hello hello.c

默认头文件目录: /usr/include/    /usr/local/include/

默认库文件目录: /lib  /usr/lib/  /usr/local/lib

 

zfw@zfw-vm:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin

zfw@zfw-vm:~$ cd /usr/local/arm/4.3.2

zfw@zfw-vm:/usr/local/arm/4.3.2$ find -name stdio.h

./arm-none-linux-gnueabi/libc/usr/include/stdio.h

 

zfw@zfw-vm:/usr/local/arm/4.3.2$ find -name lib


 

编译选项:

-I <dir>   // 指定头文件的目录,后面加目录的路径

默认的头文件目录是工具链的include目录

如果默认的头文件目录里面没有要包含的文件,就需要用-I 指定要包含的头文件目录

比如:gcc –I include –o hello hello.c   // 当前目录下的include目录

 

-L <dir>   // 指定库文件的目录

默认的库文件目录是:工具链里的lib目录

 

-l        // 指定使用哪一个.so动态库

-ljpeg    // 使用libjpeg.so这个动态库   (如果默认的库文件没有的话,就需要指定)

 

 

2. 万能命令

aconfigure

./configure --host=arm-linux --prefix=$PWD/tmp

make

make install

 

--host  :  指定交叉编译工具链        

--prefix:  指定安装路径  

如果不指定默认安装到/usr, /usr/local/     

 

 

如果配置的时候出现错误:

configure: errorcannot compile a simple program, check and CFLAGS (cross compiling doesn’t work)

那么可以查看下config.log这个文件

find -name "*log"     // 搜索config.log        

vi config.log         // G跳到档尾 从最后往上看,查看第一个error

 

b没有configure

直接修改Makefile,把gcc改为arm-linux-gcc

 

常见错误:

a.  缺乏文件

./configure过程中出错时,可以打开config.log

从后面往上查找第1个错误

 

ac_nonexistent.h: No such file or directory

缺乏头文件,一般是缺乏某个库,把问题google,知道哪个库,那么就去编译它,把它拷贝到工具链

 

b.  缺少库

去交叉编译所依赖的库,把所得到的头文件,库文件,放入工具链

把库文件放入根文件系统

 

 

例子:

编译libusb时,提示:

configure: error: “udev support requested but libudev installed”

表示 libusb 依赖于 libudev

 

解决方法:编译libudev,或者配置libusb去掉某些功能

./configure –hely | grep udev

./configure --host=arm-linux --prefix=$PWD/tmp –disable-udev

下载libudev后,也是./configure --host=arm-linux --prefix=$PWD/tmp; make;

install

把头文件,库文件,放入工具链里的includelib

把库文件放到开发板根文件系统和lib

 

 

 

阅读(683) | 评论(0) | 转发(0) |
0

上一篇:C指针理解

下一篇:没有了

给主人留下些什么吧!~~