LD_LIBRARY_PATH不起作用

时间:2014-03-18 07:30:32

标签: c windows mingw shared-libraries

我制作了名为drive.c和mylib.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对话框消息program can start because libmylib.so.1.0.1 is missing

设置了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在哪里?

1 个答案:

答案 0 :(得分:2)

Windows不使用LD_LIBRARY_PATH。您的共享库DLL需要与drive.exe位于同一目录中,或位于PATH的目录中。

Windows'的全部细节。这里记录了DLL搜索: