我有一个非常简单的问题,我一直试图弄清楚过去6个小时左右。我想在Mac OS X上简单地构建一个动态库,然后使用该库构建一个应用程序。我已经创建了.dylib并用它编译了测试应用程序,但是当我运行应用程序时,我得到了:
Joes-Mac-Pro:桌面Joe $ ./test dyld:未加载库:./ lib / simple_library.dylib 参考自:/Users/Joe/Desktop/./test 原因:找不到图像 跟踪/ BPT陷阱:5
我已经尝试在可执行文件目录中创建一个lib文件夹并将dylib放入其中,同样的错误。我已经尝试将dylib放在可执行路径本身,同样的错误。我已经尝试使用install_name_tool来更改可执行文件中dylib的路径,没有任何更改,同样的错误。我尝试使用-headerpad_max_install_names构建测试应用程序,然后使用install_name_tool更改路径。仍然没有变化。同样的错误。
我是不是想用Mac操作系统做不到的事情?我是这个平台的新手,习惯于在Windows和GNU / Linux上顺利工作。此外,我正在尝试使用命令行执行所有这些操作。我非常希望避免使用XCode。
编辑:哎呀,我说。结果我在install_name_tool参数中输入了一个拼写错误。现在工作正常。
答案 0 :(得分: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手册页中。
答案 1 :(得分:0)
install_name_tool是正确的工具。
尝试otool your_binary
查看哪个dylib缺失。
还要确保您的二进制文件和链接库是针对相同的体系结构构建的。