在详细模式下使用g ++编译我的C ++程序后,我注意到LIBRARY_PATH有很多../
/usr/lib/gcc/x86_64-linux-gnu/4.8/
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/
/lib/x86_64-linux-gnu/
/lib/../lib/
/usr/lib/x86_64-linux-gnu/
/usr/lib/../lib/
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../
/lib/
/usr/lib/
其中一些很有趣,比如/lib/../lib/。在mingw环境下也是如此:
d:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/lib
这是d:\mingw\mingw32\lib
的较长版本,我猜。为什么库路径以这种方式列出?
答案 0 :(得分:3)
编译gcc时,与使用autoconfig的许多其他程序非常相似,指定安装路径供其使用。由于gcc有很多文件散布在整个文件系统中,并且因为编译gcc被认为是一项艰巨的任务(它不再像过去那样真实,但仍然如此),那么gcc有一些技巧来减少对确切的安装路径。
你所看到的是一个这样的伎俩。
通过使用与已知组件所在位置相关的路径,gcc创建了一个环境,您可以将整个安装基础移动到另一个目录,并让它找到所有库。