代码之家  ›  专栏  ›  技术社区  ›  user1345414

DL_LIBRARY_PATH不工作

  •  1
  • user1345414  · 技术社区  · 11 年前

    我制作了名为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对话框消息 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 在的同一目录中 驱动器.exe , 驱动器.exe 可以运行。

    如何告诉系统libmylib.so.1.0.1在哪里?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Michael Burr    11 年前

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

    Windows DLL搜索的完整详细信息记录在此处: