2016-12-19 3 views
1

Я пытаюсь создать пролог в одиночном исполнении, выполнив минималистский пример, показанный на http://www.swi-prolog.org/FAQ/UnixExe.html.swi proog standalone исполняемый файл для mac не работает как ожидалось

Все, кажется, работает хорошо, но если я пытаюсь выполнить на другом макинтош, который не имеет SWI-Пролог установлен я получаю следующее сообщение об ошибке:

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

Команда бегаю и его выход :

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 совпадает с примером, приведенным на сайте (ссылка выше)

Так вопрос, что мне не хватает?

+0

Не уверен, если это относится к MacOS, но на Linux, пытаясь сделать «автономный», слишком много проблем, чтобы приложить все усилия. Надеюсь, что кто-то даст вам полезный ответ. –

+0

Я переключился на пролог GNU ... компиляция работала как шарм из коробки. Однако я бы не прочь ответить на этот вопрос :) – skamsie

+0

Сила SWI-Prolog - обширные стандартные библиотеки. Если вы хотите «скомпилировать» двоичные файлы, GNU-Prolog определенно лучший выбор. –

ответ

1

Я думаю, что ответ указан на странице, которую вы указали.

If the SWI-Prolog kernel is statically linked (default on Linux/i386) and the state does not use external packages that provide shared objects, you are done. Otherwise, you must make the shared objects available and findable to make the program usable on another computer.

Похоже, ваш оригинальный SWI-Prolog установка позволяет использовать совместно используемые библиотеки, которые должны будут в комплекте с исполняемым файлом вручную, как было указано на странице:

If the SWI-Prolog kernel is statically linked (default on Linux/i386) and the state does not use external packages that provide shared objects, you are done. Otherwise, you must make the shared objects available and findable to make the program usable on another computer.

+0

хе-хе ... не обижайтесь, но скопируйте вставку из ссылки, которую я только что отправил, на самом деле не очень хороший ответ. Проблема в том, что я не знаю, как их связывать вручную. Можете ли вы привести пример? – skamsie