QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1327|回复: 5

请问:如何用交叉编译器编译软件?

[复制链接]
发表于 2004-10-25 10:46:51 | 显示全部楼层 |阅读模式
我要把一个软件用交叉编译器编译后安装到目标板上,可是对于文件夹里那些复杂的各种文件之间的关系实在不太明白(虽然我一经认真的阅读了install文件).或者有没有好的参考文档或书目?恳请帮助
发表于 2004-10-25 11:08:28 | 显示全部楼层
跟本地编译其实差不多。
不同点:
1.编译器不一样,要用交叉编译器。
2.库路径不一样,原来的-L/usr/lib/ -L/lib -L/usr/local/lib -L/usr/X11R6/lib要相应改成目标库路径。
3.头文件路径不一样(有时用本地头文件路径也能通过编译),原来的-I/usr/include -I/usr/X11R6/include .............要换成目标头文件路径。
回复

使用道具 举报

 楼主| 发表于 2004-10-25 12:12:58 | 显示全部楼层
谢谢mozilla,那么在哪里更改呢,makefile.in文件中吗?
您说的库和头文件是指编译器的库和头文件吗?(如果问的不着边请见凉
回复

使用道具 举报

发表于 2004-10-25 12:47:45 | 显示全部楼层
举个例子吧。
假设你的交叉编译器叫target-gcc,target-g++之类的,目标系统库放在/target/lib,/target/usr/lib,/target/usr/X11R6/lib下,目标系统的头文件放在/target/usr/include,/target/usr/X11R6/include下。
本地编译:gcc a.c b.c c.c -lpthread -L/usr/X11R6/lib -lX11 -I/usr/X11R6/include
对应的交叉编译:target-gcc a.c b.c c.c -L/target/lib -L/target/usr/lib -lpthread -L/target/usr/X11R6/lib -lX11 -I/target/usr/X11R6/include -I/target/usr/include
以上是单个编译命令的用法。
如果你的项目对交叉编译支持得好,那么可以这样做:
./configure --prefix=/target --libdir=/target/usr/lib --includedir=/target/usr/include --x-includes=/target/usr/X11R6/include --x-libraries=/target/usr/X11R6/lib --build=i686-pc-linux-gnu --host=target
如果没用到X那么就去掉--x-includes和--x-libraries。
如果不支持交叉编译,那只能手动改了,改makefile.in和makefile都行。
回复

使用道具 举报

 楼主| 发表于 2004-10-26 09:38:48 | 显示全部楼层
mozilla你好, 就是在敲configure命令时把这些库文件和头文件的目录写在选项中,是吗?那么,install文件上说,可以使用  
  ./configure   --host=交叉编译器名 --prefix=安装路径
可是我这样编译后,仍由很这很多报错,为什么呢?可能是什么原因?怎么更正?

你的资料栏的邮箱是可用的马?可以的话,能不能通过邮箱交换一下msn号, 麻烦了
回复

使用道具 举报

发表于 2004-10-26 19:30:26 | 显示全部楼层
./configure --prefix=安装路径 --build= i686-pc-linux-gnu --host=交叉编译器名 --libdir=目标库路径 --includedir=目标头文件路径
邮箱可用,但我一般不用msn。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:28 , Processed in 0.037576 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表