|
发表于 2008-10-23 09:12:30
|
显示全部楼层
Post by lofeng410;1897683
在第一遍binutils时,最后为第一次工具链的调整准备ld,
make -C ld LIB_PATH=/tools/lib成功执行后,
ld/ld-new --verbose |grep SEARCH结果为:
/tools/i686-pc-linux-gnu/lib
/tools/lib
-----------------------------------------------------------
在手册中有如下的解释:
-C ld LIB_PATH=/tools/lib
This option rebuilds everything in the ld subdirectory. Specifying the LIB_PATH Makefile variable on the command line allows us to override the default value and point it to the temporary tools location. The value of this variable specifies the linker's default library search path.
从上面的解释看,ld-new的库搜索路径应该是只有/tools/lib的,现在怎么在他前面多了个/tools/i686-pc-linux-gnu/lib?
这个i686的目录,是GCC编译器自动加上去的。这是你系统的“构架”,GCC编译器必须要知道你系统的构架,才能正确地编译程序。
比如:686和386的构架就是不一样的。
原因是处理器的指令不同,686的指令要多过386。还记得我之前说过,所有的程序都是机器语言执行的吗?GCC要把程序编译为机器程序,那么它必须首先要知道,你的机器到底有哪些机器语言的指令。
当然,386构架是通用的。但是,由于它指令少,那么将无法达到最快的速度。
由于ld和GCC是绑在一块的,所以也会加上这个目录。 |
|