2022年如何交叉编译应用程序 .pdf
《2022年如何交叉编译应用程序 .pdf》由会员分享,可在线阅读,更多相关《2022年如何交叉编译应用程序 .pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如何交叉编译应用程序,技巧,注意事项。最近大家都涉及交叉编译应用程序,感觉大家的路子有点偏, 觉得有必要纠正一下。一般的应用程序编译的步骤无外呼 ./configure &mak e &m akeinstall但是对于交叉编译不能照搬,尤其要注意不能轻易make install(当然如果指定了 - prefix 就无所谓了, 否则可能会覆盖标准路径的程序就惨了)这里有两个思路:1 对于刚开始交叉编译的人来说,往往很晕,总想借助 ./configure 后面加一堆参数来解决,比如 ./configure - -tar get=arm-9tdm i- linux-gnu - host=arm-9t
2、dmi-linux-gnu 来搞定 ,对于一般的小的程序来说,应该没有问题,而且也推荐大家这样用,但是要注意,这样作之前,先要 ./configure - -help |grep - host,看看有没有这样的选项,如果没有呢?想想也可能,如果程序的作者根本没有考虑到除了x86的平台呢?你只能自己改写Mak efile 了。所以 , ./configure 不是万能的, 而且语法很混乱, 不要指望 ./configure 给你作一切。而且局限很大。2 所以这个时候 , 就要求交叉编译的第二个层次,自己改写Mak efile , 想怎么改就怎么改, 灵活性最大 需要你开始就./configure
3、 一下, 跟平台有关的参数一律不加。./configur e 过后就会生成Makefile 了,里面的gcc 相关的参数,包括lib 的路径当然是x86下的了, 比如 /usr/local/lib/,/usr/lib/,/lib/ 什么的,改掉就是了。或者注释掉。 gcc要换成 arm-linux gcc一类的编译器,(如果不想每次都改, 参考下面的include prerules.m k的做法) ,总之,这要求你的Makefile 掌握的很熟练,思路就是边编译,发现问题,再改,即使一开始Makefile不熟练,到后来,也熟练了。是个练习Mak efile 的好方式。总之,我们最后要的就是Ma
4、kefile , 看你怎么能得到它。一个最标准的Mak efile(去掉很多无用的东西)通过./configure 生成的Makefile ,你会发现冗余的地方非常多,其实关键的地方,就那么20几条,可以试着精简一下,这样对程序的组织架构会熟悉的快一些,毕竟Makefile 反应了程序(具体就是.c 和 .h )之间的依赖关系 。openssh的Mak efile 我没有精简过(当然要精简也很容易), 举个telnetd 的例子,说明一下:- telnetd-#- -TOPDIR := $(shell /bin/pwd)TOPDIR := $(TOPDIR)/.#prerules.mk包含了这
5、些变量的定义,比如$CC, $CPP , $CXX , $CFLAGS 等等。#尽量不要在这里出现,CC= arm-linux- gcc这样的定义,扩展性不好, 尽量用全局变量, 便于管理和拓展。include $(TOPDIR)/prerules.mk#- -EXEC = telnetd#好的Makefile 都是这样写的, 也就是具体生成一个可执行文件或者 lib 库,需要哪些.o,这些.o会依据后面的 .c.o: 规则来编译出来的。OBJS = telnetd.o state.o termstat.o slc.o sys_term.outility.oglobal.o authenc.o
6、logwtm p.o logout.o#$(CC) 的编译选项,一般程序自己的带的,不要改它,而且一般都是+= , 不要用 = ,CFLAGS += - DEMBED - DPARANOID_TTYS-DUSE_TERMIO- DKLUDGELINEMODE- D_GNU_SOURCE-Wallifdef CONFIG_DEFAULTS_LIBC_UCLIBCLDLIBS:= -lutil$(LDLIBS)endifall: $(EXEC)很显然all 是最关键的了, 也要发在最开始的地方。这样m ak e 就相当于m ake all ,这是大家的潜规则。.c.o:$(CC)- c -o $
7、如果是应用程序的可执行文件,我们可以用ldd 命令来查看它需要哪些必要的库。具体的命令:refer ,http:/infomax/bbs/viewthr ead.php? tid= 52&extra=page%3D12看看需要哪些配置文件,也就是conf文件。其实如果想知道上面的这些,还有个办法, 就是先在pc上编译, 安装,./configure - prefix=/work/bob (改成你自己的目录即可) , m ake &m ake install ,看看/work/bob/ 下面到底生成了哪些file , 你不就心里有数了吗。先把你知道的应用程序可执行文件 copy到板子上去,执行一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年如何交叉编译应用程序 2022 如何 交叉 编译 应用程序
限制150内