Создание проекта C ++, который ссылается на библиотеку Haskell, используя Shake и Stack

Я пытаюсь создать простой проект C ++ (исполняемый файл), который вызывает функцию Haskell,
используя Shake для скрипта сборки и вызывая Stack из скрипта для сборки библиотеки Haskell.

Допустим, библиотека Haskell называется haskell-simple-lib,

Сценарий Shake вызывает stack install haskell-simple-lib который выводит .so файл: libHShaskell-simple-lib-*version*-*unique identifier*.so

Мои правила Shake зависят от имен файлов, и поэтому я не могу использовать вышеупомянутое имя, так как заранее не знаю, каким будет уникальный идентификатор. Итак, скрипт Shake запускает cp в файле для _build/libHShaskell-simple-lib.so

Параметры ссылок для исполняемого файла C ++ имеет -L_build а также -lhaskell-simple-lib,

Когда я пытаюсь запустить исполняемый файл, я получаю сообщение об ошибке:

error while loading shared libraries: libHShaskell-simple-lib-0.1.0.0-8DkaSm3F3d44RUd03fOuDx-ghc7.10.2.so: cannot open shared object file: No such file or directory

Но если я переименую файл, я скопировал в _build, к первоначальному названию stack install выводится (с уникальным идентификатором), исполняемый файл работает правильно.

Казалось бы, все, что мне нужно сделать, это просто cp файл в _build без стирания уникального идентификатора из имени, однако мне нужно знать имя .so Заранее запустите файл для сценария встряхивания.

Я не понимаю, почему при запуске исполняемого файла ищется имя файла .so. Флаг ссылки не упоминает полное имя .so тот stack install выводится только libHShaskell-simple-lib,
Может ли быть так, что оригинальное имя встроено в файл .so? Если да, то как можно решить эту проблему?

РЕДАКТИРОВАТЬ:
Я знаю, что это можно решить с помощью фиктивного файла, но я хотел бы знать, есть ли лучший способ сделать это.

2

Решение

Исходный идентификатор встроен в .so, Я не помню все детали, но я знаю, что я решил такие проблемы, используя rpath вертеться в прошлом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]