- 主题:Linux 应用程序可以自动加载当前工作目录中的共享库?
古老的 Linux 库文档都告诉我们:
将共享库放入可执行文件的工作目录不是 Linux 共享库的加载方式。比如
https://serverfault.com/questions/279068/cant-find-so-in-the-same-directory-as-the-executable#:~:text=To%20load%20the%20shared%20objects%20from%20the%20same,not%20modify%20the%20LD_LIBRARY_PATH%20variable%20of%20your%20system.
https://stackoverflow.com/questions/39978762/linux-executable-cant-find-shared-library-in-same-folder
但,通过在 Fedora 35 上亲自试验,发现:
将共享库的三个文件放入可执行文件的工作目录,也能够被正确加载!
请问这种类似 DLL 的加载方式在 Linux 发行版中通用吗?
--
FROM 183.131.109.*
我的意思是自己制作了一个库,比如
$ tree .
.
├── main.c
└── tl.c
然后在当前目录用 tl.c 生成了 libtl.so、libtl.so.0、libtl.so.0.0.0
接着在同一个目录将它与 main.c 的目标文件链接生成可执行文件 main,
直接在当前目录直接执行
$ ./main
竟然能正确执行 tl.c 中的功能!
但古老的文档说,这是不行的,必须配置 LD_LIBRARY_PATH。
【 在 iconquer 的大作中提到: 】
: ld.so.conf ?
--
FROM 183.131.109.*
这个命令没有任何输出
让我用一个新账户试一下再来反馈
【 在 iconquer 的大作中提到: 】
: echo $LD_LIBRARY_PATH 是不是加上了当前路径了?
--
FROM 183.131.109.*
根据新账户的试验,确实是我弄错。
Linux 共享库确实按古老的说法加载。
【 在 easior 的大作中提到: 】
: 这个命令没有任何输出
: 让我用一个新账户试一下再来反馈
--
FROM 183.131.109.*