-rpath/-rpath- link其实都是ld的option,不是gcc的。
gcc只是一个wrapper,将preprocessor, assemble, link三者结合了起来。
-rpath <dir>的作用是手动将一个目录强行指定成一个.so文件的搜索目录,他的优先级在LD_LIBRARY_PATH和/etc /ld.so.conf...这些地方定义的.so文件搜索目录之上。
由于这个目录是由程序的开发人员在编译的时候指定的,所以将来这个程序到了其他机器 上运行的时候,这个目录是不能修改的。
-rpath-link和-rpath类似,只不过-rpath-link <dir>指定的是该程序需要的某个动态链接库,如果还需要其他的动态链接库(就象我们这里libalp_media.so还需要其他 的.so一样)的时候,到哪个/哪些目录下去查找需要的.so。而且,和-rpath不同,在-rpath-link中定义的目录,有可能在ldd <exec>的输出中看不见,因为这里定义的目录不是该执行程序本身所需要的。
清楚了这两个option的含义之后, 来看用法,要在gcc的命令行中直接使用这两个option,必须遵循语法:-Wl,......。比 如:-Wl,--rpath-link /opt/alp/lib。
-rpath与-rpath-link是ld的选项而非gcc的,用于指定.so文件搜索路径。-rpath用于程序运行时搜索动态库,而-rpath-link则定义了链接时所需的动态库位置。

4万+

被折叠的 条评论
为什么被折叠?



