0

我有一个非常简单的问题,过去 6 个小时左右我一直在尝试解决这个问题。我想简单地在 Mac OS X 上构建一个动态库,然后使用该库构建一个应用程序。我已经创建了 .dylib 并用它编译了测试应用程序,但是当我运行应用程序时,我得到:

Joes-Mac-Pro:Desktop Joe$ ./test dyld:库未加载:./lib/simple_library.dylib 引用自:/Users/Joe/Desktop/./test 原因:找不到图像 Trace/BPT 陷阱:5

我尝试在可执行目录中创建一个 lib 文件夹并将 dylib 放入其中,同样的错误。我尝试将 dylib 放在可执行路径本身中,同样的错误。我尝试使用 install_name_tool 更改可执行文件中 dylib 的路径,没有任何变化,同样的错误。我尝试使用 -headerpad_max_install_names 构建测试应用程序,然后使用 install_name_tool 更改路径。仍然没有任何变化。同样的错误。

我试图用 Mac 操作系统做的事情是不可能的吗?我是这个平台的新手,并且习惯于在 Windows 和 GNU/Linux 上顺利工作。另外,我正在尝试使用命令行来完成所有这些操作。我非常希望避免使用 XCode。

编辑:哎呀,我发疯了。原来我在 install_name_tool 参数中打错了字。现在工作正常。

4

2 回答 2

1

install_name_tool 是正确的工具。尝试otool your_binary查看缺少哪些 dylib。还要确保您的二进制文件和链接库是为相同的架构构建的。

于 2012-04-17T16:23:48.793 回答
0

您需要确保 DYLD_LIBRARY_PATH 包含您的库所在的目录。

   DYLD_LIBRARY_PATH
          This is a colon separated list of directories that contain libraries. The dynamic linker searches these directo-
          ries before it searches the default locations for libraries. It allows you to  test  new  versions  of  existing
          libraries.

          For  each library that a program uses, the dynamic linker looks for it in each directory in DYLD_LIBRARY_PATH in
          turn. If it still  can't  find  the  library,  it  then  searches  DYLD_FALLBACK_FRAMEWORK_PATH  and  DYLD_FALL-
          BACK_LIBRARY_PATH in turn.

          Use  the  -L  option to otool(1).  to discover the frameworks and shared libraries that the executable is linked
          against.

dyld 手册页中记录了动态链接的各种细节。

于 2012-04-17T16:20:21.810 回答