【问题标题】:Why do I fail to load the dylib?为什么我无法加载dylib?
【发布时间】:2013-04-28 07:48:42
【问题描述】:

这是我输入的命令:

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

原因:图片未找到

跟踪/BPT 陷阱:5

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

【问题讨论】:

  • /Users/hanxu/Documents/./a.out”中的那个点对我来说真的很奇怪。
  • @MichaelDautermann,我刚刚复制了命令行结果。我使用“./a.out”来运行我的程序。这对我来说也很奇怪..
  • 是您正在构建 Xcode 项目的命令行工具,还是通过 Makefile?
  • @MichaelDautermann,Makefile,我是从这里下载的:ijg.org
  • 是“/jpeg_lib/lib”中的“libjpeg.9.dylib”是真实文件还是“/usr/local/lib”的(损坏的)符号链接?

标签: macos compilation clang


【解决方案1】:

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

export LD_LIBRARY_PATH=/path/to/libjpeg

【讨论】:

  • LD_LIBRARY_PATH 是 Linux (UNIX),在 OSX 下是 DYLD_LIBRARY_PATH
【解决方案2】:

您是否检查过 jpeg_lib 的权限?如果您安装了以 root 身份运行的任何内容,然后以您自己的身份运行,这可能已经发生。

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

【讨论】:

    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2021-08-26
    • 2015-08-25
    相关资源
    最近更新 更多