我的 RHEL 6.4 上的 32 位编译应用程序有一个共享对象文件 libfault.so。我想在启动应用程序时预加载此文件。我已将其放在 /usr/local/lib/ 目录中。
但是在启动应用程序时,我收到以下错误。
ERROR: ld.so: object 'libfault.so' from LD_PRELOAD cannot be preloaded: ignored.
但是,如果我以 64 位编译 libfault.so 并将其放置在 /usr/local/lib64/ 中,则不会收到错误。但该文件没有执行其预期功能,因为我的应用程序是 32 位编译的。
答案1
在查找要加载的库时,可以使用环境变量$LD_LIBRARY_PATH
覆盖动态加载器的搜索路径。
要临时为单个应用程序执行此操作,您可以像这样调用它:
$ LD_LIBRARY_PATH=/usr/local/lib <your executable here>
您可以通过导出该变量来使您的 shell 实例的更改更加永久:
$ export LD_LIBRARY_PATH=/usr/local/lib
根据需要调整上面的路径,以适应 32 位的.so
存储位置。