Ошибка компоновщика пакетов Haskell: не удается загрузить.so/.DLL из-за: clang

#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
  

чтобы помочь компоновщику.