cabal: сборка ghc с динамической библиотекой и общей библиотекой - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать динамическое приложение с помощью GHC, это мой файл кабала:

executable app
  main-is: Main.hs
  c-sources: cbits/foo.cpp
  cc-options: -shared -fPIC
  include-dirs: /usr/local/lib/llvm-6.0/include
  extra-libraries: stdc++ clang
  extra-lib-dirs: /usr/local/lib/llvm-6.0/lib
  other-modules:
    ...

Мне нужно использовать FFI, и я работаю на MacOS.Я получаю сообщение об ошибке компоновщика:

Неопределенные символы для архитектуры x86_64: "_clangToJSON", на который ссылается: _ClangziCParser_hppTree_info в CParser.o

Это действительно чужая функциячто я пытаюсь получить доступ, я добился успеха со следующими аргументами для ghc в Makefile:

Сборка FFI impl, разделяемая библиотека:

 clang -fPIC -shared foo.cpp -o foo.so

Сборка Main.hs собщая библиотека foo.so:

ghc -dynamic Main.hs -o  -lfoo -L. -optl-Wl,-rpath,'$ORIGIN' 

Мне удалось настроить cabal в режиме dynamic с --enable-shared, но мне нужно, чтобы clang внутри cabal генерировал .so.Я ищу в dist/build/app и не могу найти .so, даже с опцией -shared, добавленной к моему cc-options.Как я могу сгенерировать .so, а затем заставить клику динамически связываться с ним?

...