До сих пор я не смог построить свой Common Lisp проект в исполняемый с SbCl так:Common Lisp: исполняемый и разделяемая библиотека C
(sb-ext:save-lisp-and-die "myexecutable" :toplevel #'main :executable t)
Кроме того, я сделал это для вызова функций C , скомпилированный в общую библиотеку, из общего lisp; что-то вроде этого:
(cffi:define-foreign-library libtest
(:unix (:default "./libtest"))
(t (:default "./libtest")))
(cffi:use-foreign-library libtest)
или использование абсолютного пути для библиотеки. Для исполняемого файла требуется общая библиотека libtest.so. У меня есть как myexecutable, так и libtest.so в том же каталоге. Однако, если я использую абсолютное значение, я не могу распространять эти два файла. Если я использую «./libtest», он не находит библиотеку при запуске из другого каталога.
Каков подход для этого случая? Спасибо заранее!
Почему вы не можете перераспределить его использовать абсолютный путь? –
Предположим, я ввел «/ home/me/src/my-project», и я пишу в файле lisp. Когда я распространяю два файла, как-то файл lisp должен обновляться с учетом нового пути. Как мне это достичь? – Dimitris
Хотя я думаю, что библиотеки обычно помещаются в одно системное расположение (например, '/ usr/lib' на linux), почему вы не можете использовать относительный путь? –