include-path和library-path中的相对路径

时间:2016-01-07 18:37:26

标签: c++

在详细模式下使用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的较长版本,我猜。为什么库路径以这种方式列出?

1 个答案:

答案 0 :(得分:3)

编译gcc时,与使用autoconfig的许多其他程序非常相似,指定安装路径供其使用。由于gcc有很多文件散布在整个文件系统中,并且因为编译gcc被认为是一项艰巨的任务(它不再像过去那样真实,但仍然如此),那么gcc有一些技巧来减少对确切的安装路径。

你所看到的是一个这样的伎俩。

通过使用与已知组件所在位置相关的路径,gcc创建了一个环境,您可以将整个安装基础移动到另一个目录,并让它找到所有库。