是否可以在 C 程序中硬编码共享库位置?

Rob*_*y75 6 c shared-libraries

通常,程序(在 Linux 中)使用 LD_LIBRARY_PATH 来定位它们的共享库,但我想使用自定义路径,而不永久更改 LD_LIBRARY_PATH。

基本上,bash-wrapper 可以轻松实现:

#!/bin/sh
export LD_LIBRARY_PATH=/my_lib_path/
/my_bin_path/myprogram $*
Run Code Online (Sandbox Code Playgroud)

(Bash 仅在此脚本中更改 LD_LIBRARY_PATH 而不是永久更改)

我想知道是否有可能没有丑陋的 bash-hack 的情况下在单个可执行文件中用纯 C 做同样的事情。所有路径和库的确切名称在编译时都是已知的。

apm*_*ell 5

-rpath选项传递给ld,或者,通过您的编译器-Wl,-rpath。它允许您扩展搜索路径。它通常由希望从某个插件目录加载模块的可执行文件使用。您可以通过此方法添加任意数量的目录。