如果在编译时指定了-sysroot就是为编译时指定了逻辑目录。编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录。
当然,如果我们同时指定了--prefix=/home/shell.albert/libqt5.3.2希望生成的库和头文件等都安装到此目录下,执行make install开始复制操作。
但是当我们去系统的/home/shell.albert/libqt5.3.2中去寻找编译成果时却没有这些文件,
而直接的成果输出在了,输出路径是相对于-sysroot的。
rpath全称是run-time search path。Linux下所有elf格式的文件都包含它,特别是可执行文件。它规定了可执行文件在寻找.so文件时的第一优先位置。rpath一般可以在编译时指定,在Linux下,执行./configure时就有-rpath,选项,可以将rpath的路径指定到所需动态库的路径下。
rpath只能是绝对路径,不能是相对路径。使用相对路径是没有意义的,因为相对路径将相对于运行程序时的当前工作目录,而不是相对于找到二进制文件/库的目录。 因此,在几乎任何情况下,它对于$PATH或库中的可执行文件都根本不起作用。
比如你的可执行文件在/usr/bin/exe,动态库在/usr/lib/路径下,rpath被指定为../lib,那么只有进入/usr/bin/路径下执行exe时,才能找到正确的动态库,在其他目录下调用该程序就无法定位到正确的动态库路径下。
link出两个共享库,一个是static,一个则是dynamic;需要注意的是,-rpath必须有才能产生dynamic库来,如果用-static,则只创建st