我安装了 fico xpress 的 Linux 版本,它使用 mosel 作为其二进制可执行文件。我可以从任何目录调用 mosel 并执行 .mos 模型(以及参数传递),如下所示:
mosel -c "exec PATH/TO/MODEL arg1='value1', arg2='value2'"
以退出代码 0 结束。
但是,当我将与上面相同的文本放入 run.sh 文件中并且:
sh run.sh
我得到:
dyld: Library not loaded: libxprm_mc.dylib
Referenced from: /usr/local/opt/xpress/bin/mosel
Reason: image not found
run.sh: line 4: 22768 Trace/BPT trap: 5 mosel -c "exec PATH/TO/MODEL arg1='value1', arg2='value2'"
我已经搜索了 dylib 文件,但它不存在(据我所知)。编辑:我在中找到了 dylib 文件/usr/local/opt/xpress/lib
另外值得注意的是,为了从命令行运行 mosel,我还必须在中设置以下内容/etc/launchd.conf
:
setenv XPRESSDIR /usr/local/opt/xpress
setenv PATH $XPRESSDIR/bin:$PATH
setenv LD_LIBRARY_PATH $XPRESSDIR/lib:$LD_LIBRARY_PATH
setenv CLASSPATH $XPRESSDIR/lib/xprs.jar:$CLASSPATH
setenv CLASSPATH $XPRESSDIR/lib/xprb.jar:$CLASSPATH
setenv CLASSPATH $XPRESSDIR/lib/xprm.jar:$XLASSPATH
setenv XPRESS $XPRESSDIR/bin
为什么我从 shell 脚本中收到此错误,而不是在终端中执行同一行时收到此错误?
答案1
在您的脚本中尝试使用以下路径导出DYLD_LIBRARY_PATH
环境变量dylib
:
export DYLD_LIBRARY_PATH=/usr/local/opt/xpress/bin/lib:${DYLD_LIBRARY_PATH}
mosel -c "exec PATH/TO/MODEL arg1='value1', arg2='value2'"
这应该让 mosel 可执行文件知道动态库的位置。