我制作了名为 drive.c 和 mylib.c 的 C 程序。
drive.c 是主模块 mylib.c 是我想作为共享库工作的子模块。
我可以在 MINGW 上通过这一步编译它们
gcc –fPIC –g –c –Wall mylib.c
gcc -shared -Wl,-soname,libmylib.so.1 -o /c/opt/lib/libmylib.so.1.0.1 mylib.o -lc
gcc -g -Wall -Wextra -pedantic -I./ -L/c/opt/lib -o drive.exe drive.c –l:libmylib.so.1
最后我做了 drive.exe
然后显示 Windows 对话框消息 程序可以启动,因为缺少 libmylib.so.1.0.1
。
LD_LIBRARY_PATH 已设置。
$ set|grep LD
LD_LIBRARY_PATH=:/c/opt/lib
$
还有libmylib.so.1.0.1
$ ls -la /c/opt/lib
total 98
drwxr-xr-x 2 JAC484 Administrators 4096 Mar 18 14:44 .
drwxr-xr-x 7 JAC484 Administrators 4096 Mar 14 15:47 ..
-rwxr-xr-x 1 JAC484 Administrators 45356 Mar 18 14:23 libmylib.so.1
-rwxr-xr-x 1 JAC484 Administrators 45356 Mar 18 14:23 libmylib.so.1.0.1
如果我将 libmylib.so.1.0.1
复制到 drive.exe
的同一目录中,drive.exe
可以运行。
如何告诉系统 libmylib.so.1.0.1 在哪里?
最佳答案
Windows 不使用 LD_LIBRARY_PATH
。您的共享库 DLL 需要与 drive.exe
位于同一目录中或位于 PATH
中的目录中。
此处记录了 Windows 的 DLL 搜索的完整详细信息:
关于c - DL_LIBRARY_PATH 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22472876/