joe*_*ler 3 c++ linker makefile shared-libraries ldd
我正在构建一个链接一些共享库的程序.它们包含在相对于我的项目的lib /目录中.
我遇到的问题是,我希望可执行文件知道在相对../lib目录中搜索库.这可能吗?
我真的不想更改ld_library_path或将文件移动到根拥有的标准路径之一.
当.so文件位于strace/ldd所示的标准路径之一时,我能够编译可执行文件并运行它
您可以使用-rpath链接器中的链接(使用ld作为链接器).
从其手册页:
-rpath = DIR
将目录添加到运行时库搜索路径.将ELF可执行文件与共享对象链接时使用此方法.所有-rpath参数都连接在一起并传递给运行时链接程序,后者使用它们在运行时查找共享对象.在定位链接中明确包含的共享对象所需的共享对象时,也会使用-rpath选项; 请参阅-rpath-link选项的说明.如果在链接ELF可执行文件时未使用-rpath,则在定义环境变量"LD_RUN_PATH"的内容时将使用该内容.