我正在尝试在我的 Mac(OS X)上安装一个用 C++ 编写的求解器,以便与我在 XCode 中编写的代码一起使用。
求解器文档说明了这一点:
确保你
DYLD_LIBRARY_PATH
的
- 运行已构建的可执行文件
- 与 libamg.dylib (和 gfortran RTSlibs)链接
我不太明白这是什么意思。我需要在哪里更改什么?
我已经在谷歌上搜索过,但还没有找到对我这样的新手来说足够简单的方法!如果有任何耐心的人愿意为我提供在线资源或告诉我如何以及在何处设置环境变量的基础知识,我将非常感激。
答案1
它是一个环境变量,因此通常在终端中设置
export DYLD_LIBRARY_PATH=someValue
man dyld
说:
DYLD_LIBRARY_PATH
这是包含库的目录的冒号分隔列表。动态链接器在搜索库的默认位置之前会搜索这些目录。它允许您测试现有库的新版本。
对于程序使用的每个库,动态链接器会
DYLD_LIBRARY_PATH
依次在每个目录中查找。如果仍找不到该库,它会DYLD_FALLBACK_FRAMEWORK_PATH
依次DYLD_FALLBACK_LIBRARY_PATH
搜索。使用
-L
选项otool(1)
. 来发现可执行文件所链接的框架和共享库。
你可能想要类似的东西
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
将 (当前目录)添加.
到搜索位置列表的前面。在我未修改的 OS X 上,DYLD_LIBRARY_PATH
没有当前值:
$ echo $DYLD_LIBRARY_PATH
$
根据您打算如何运行程序,您需要进行不同的设置,例如在 Xcode 中(但我不知道在哪里)。
答案2
export DYLD_LIBRARY_PATH
您的系统上绝对不应该设置该项。
可以使用otool -L
和来修复共享库路径install_name_tool
。
例如,如果您编译 Perl DBD-MySQL,您将无法使用它,因为链接器不知道您将 MySQL 安装在哪里。
># make
....
># otool -L blib/arch/auto/DBD/mysql/mysql.bundle
blib/arch/auto/DBD/mysql/mysql.bundle:
libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
#> install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib blib/arch/auto/DBD/mysql/mysql.bundle
># otool -L blib/arch/auto/DBD/mysql/mysql.bundle
blib/arch/auto/DBD/mysql/mysql.bundle:
/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
#> make test
...
Result: PASS
#> make install
就这么简单。
答案3
在 Xcode 4 中,您可以将其添加到项目 Scheme 中,以避免出现如下错误:
dyld: Library not loaded: @loader_path/libLeap.dylib
Referenced from: /Users/paulsolt/Library/Developer/Xcode/DerivedData/LeapTest-eqcxmzewheyjusgrcszyvlcxlgna/Build/Products/Debug/LeapTest
Reason: image not found
在菜单中单击“产品”->“编辑方案”->“参数”选项卡->添加“环境变量”-> 键:DYLD_LIBRARY_PATH 值:/Users/MyUserAccount/path/to/lib
将路径更改为您的用户帐户和库文件夹的完整路径。
您应该能够构建并运行。