linux是怎么对子目录里的.o文件进行链接的?
本帖最后由 求linux注释 于 2014-09-11 22:50 编辑本人新手,最近在研究linux的编译过程,发现一个问题:linux他递归每个目录,把每个目录下的文件编译成对应的目标文件,然后把他链接为一个名为“ built-in.o ” 的文件... 后来我自己尝试了一下,使用” arm-linux-ld -T/home/test/linux/linux-2.6.22.6/arch/arm/kernel/vmlinux.lds -o built-in.o *.o “这条命令对目录下所有目标文件进行链接,发现他报错“ arm-linux-ld : cannot find usr/built-in.o ”,那么linux的makefile到底是怎么做的?怎么样才能让他不报错?
回复 1# 求linux注释
arm-linux-ld -r -o built-in.o *.o 回复 2# Tinnal 加 -r 也不行啊,还是报那个错误
把-T和*.o换成文件列表好像就可以了... :lol 弄明白了,原来linux编译子目录时是不用加-T的,链接vmlinux时才需要,至于这个*.o好像有问题暂时还不得而知,不过换成文件列表就能通过了,可能是编译器抽风了吧。。谢谢LS那些大侠 回复 5# 求linux注释
你在命令前加上echo ,把命令展开打出来的看看和你自己输入的有什么不一样。
是不是因为你当前目录已经有一个build_in.o文件,*.o把它也当输入了。
页:
[1]