#haskell #linker #clang #cabal
#haskell #компоновщик #clang #cabal
Вопрос:
ребята, у меня проблема, я хочу запустить скрипт на haskell, который импортирует libClang ( import Clang
), я сделал cabal install libClang
befor, и он работает
теперь, когда я создаю runhaskell foo.hs
, я получаю:
foo.hs: <command line>: can't load .so/.DLL for: clang (libclang.so: cannot open shared object file: No such file or directory)
я знаю, что мне нужно добавить путь к библиотеке LD_LIBRARY_PATH
, поэтому я добавляю к ней несколько путей, потому что я не знаю точно, какой из них я должен использовать (должен ли я использовать путь lib к пути clang / llvm или путь lib к каталогу .cabal, где находится мой LibClang-9.0.0?)
итак, я получил:
echo $LD_LIBRARY_PATH
/home/foo/Downloads/clang llvm-2.9-i686-linux/lib:/home/foo/.cabal/lib
после повторного запуска runhaskell та же проблема по-прежнему устраняется, что мне следует делать?
Комментарии:
1. Я замечаю, что у вас возникает множество проблем с запуском libClang, что неудивительно — окна с привязками ffi могут быть немного сложными. Тем не менее, я бы посоветовал, чтобы вместо того, чтобы писать много-много вопросов SO, вы проверили irc-канал #haskell на freenode, где вы можете найти полезных людей, которые просто расскажут вам обо всем процессе.
2. я не использую Windows, я использую ядро mint / fedora
3. о, извините, перепутал этот вопрос. В любом случае, остается в силе та же рекомендация. по конкретному вопросу вам нужно добавить в ваш ld_library_path любой каталог, в котором libclang.so является.
Ответ №1:
По крайней мере, в Arch Linux clang устанавливается в:
/usr/lib/llvm/libclang.a
/usr/lib/llvm/libclang.so
таким образом, компоновщик может найти эту библиотеку. Вы также можете добавлять пути к:
$ echo $LDFLAGS
-L/usr/local/lib -L/home/dons/lib
$ echo $LD_LIBRARY_PATH
/home/dons/lib
чтобы помочь компоновщику.