为什么我无法加载dylib?

时间:2013-04-28 07:48:43

标签: macos compilation clang

这是我输入的命令:

clang++ -Iboost -Ijpeg_lib/include/ -Ljpeg_lib/lib/ -ljpeg.9 mandelbrot.cpp

目录结构如下:

mandelbrot.cpp
/boost
/jpeg_lib/lib/
    libjpeg.9.dylib
/jpeg_lib/include/

编译成功,但是当我运行二进制文件时,会发生错误:

  

dyld:未加载库:/usr/local/lib/libjpeg.9.dylib

     

引用自:/ Users / hanxu / Documents /./ a.out

     

原因:未找到图片

     

Trace / BPT trap:5

我已经指定了jpeg_lib / include /的库搜索路径,为什么程序仍在/ usr / local / lib中搜索?

2 个答案:

答案 0 :(得分:0)

您应该在libjpeg.9.dylib中包含LD_LIBRARY_PATH所在的目录,这是在运行时找到库所必需的:

export LD_LIBRARY_PATH=/path/to/libjpeg

答案 1 :(得分:0)

您是否检查了jpeg_lib的权限?如果您安装了以root用户身份运行的任何内容,那么就可以自行运行。

在以root用户身份安装portmanteau之后,我从Perl cgi运行GD图形时遇到了同样的错误消息,发现我的libjpeg.9.dylib所在的/ usr / local / lib目录有权限700.更改为755(就像/ usr / local中的所有其他目录一样)解决了这个问题。