首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适用于mac的swi prolog独立可执行文件无法按预期运行

适用于mac的swi prolog独立可执行文件无法按预期运行
EN

Stack Overflow用户
提问于 2016-12-20 01:53:09
回答 1查看 505关注 0票数 1

我正在尝试创建一个prolog独立的可执行文件,遵循http://www.swi-prolog.org/FAQ/UnixExe.html上显示的简约示例。

一切似乎都很正常,但是如果我试图在另一台没有安装swi-prolog的mac上执行,我会得到以下错误:

dyld: Library not loaded: /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/lib/x86_64-darwin15.6.0/libswipl.dylib

我运行的命令及其输出:

代码语言:javascript
复制
pl_test|⇒ swipl --goal=hello --stand_alone=true -o hello -c hello.pl


% autoloading prolog_codewalk:must_be/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/error
% autoloading qsave:current_foreign_library/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/shlib
% autoloading error:assertion/1 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/debug
% autoloading prolog_codewalk:portray_clause/1 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/listing
% autoloading prolog_codewalk:clause_info/4 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/prolog_clause
% autoloading prolog_codewalk:initialization_layout/4 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/prolog_clause
% autoloading prolog_source:directory_file_path/3 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/filesex
% autoloading files_ex:use_foreign_library/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/shlib
% autoloading record:member/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/lists
% autoloading files_ex:maplist/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/apply
% autoloading files_ex:permission_error/3 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/error
% autoloading oset:reverse/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/lists
% autoloading prolog_debug:backtrace/1 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/prolog_stack
% autoloading prolog_codewalk:clause_name/2 from /usr/local/Cellar/swi-prolog/7.2.3_2/libexec/lib/swipl-7.2.3/library/prolog_clause
% Autoloader: iteration 1 resolved 11 predicates and loaded 14 files in 0.101 seconds.  Restarting ...
% Autoloader: loaded 11 files in 2 iterations in 0.143 seconds

hello.pl与网站上提供的示例相同(请参阅上面的链接)

所以问题是我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-12-20 18:58:27

我想答案就在你给出的页面上。

如果SWI-Prolog内核是静态链接的(在Linux/i386上是默认的),并且状态不使用提供共享对象的外部包,那么就完成了。否则,您必须使共享对象可用并可找到,才能使程序在另一台计算机上可用。

看起来您最初的SWI-Prolog安装使用了共享库,这些共享库必须手动与您的可执行文件捆绑在一起,如页面上所述:

如果SWI-Prolog内核是静态链接的(在Linux/i386上是默认的),并且状态不使用提供共享对象的外部包,那么就完成了。否则,您必须使共享对象可用并可找到,才能使程序在另一台计算机上可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41228331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档