Сложность компиляции c2ffi на FreeBSD 12 и Debian 10 - PullRequest
1 голос
/ 07 августа 2020

У меня проблемы с установкой c2ffi (https://github.com/rpav/c2ffi) как на FreeBSD 12, так и на Debian 10. Мне нужен c2ffi, чтобы использовать некоторые привязки Common Lisp, основанные на c2ffi.

На FreeBSD 12 у меня установлены Clang 6.0 (по умолчанию) и 10.0; c2ffi требует LLVM 10.0. Поскольку cc и c ++ относятся к Clang 6.0 в моей установке FreeBSD, я установил PATH на /usr/local/llvm10/bin:$PATH, а также установил псевдонимы для ссылки на clang и clang++. У меня установлен cmake версии 3.17.3. Однако, когда я перехожу к этапу make установки c2ffi, я сталкиваюсь со следующей ошибкой:

Scanning dependencies of target c2ffi
[  7%] Building CXX object CMakeFiles/c2ffi.dir/src/AST.cpp.o
[ 15%] Building CXX object CMakeFiles/c2ffi.dir/src/Decl.cpp.o
[ 23%] Building CXX object CMakeFiles/c2ffi.dir/src/Expr.cpp.o
[ 30%] Building CXX object CMakeFiles/c2ffi.dir/src/OutputDriver.cpp.o
[ 38%] Building CXX object CMakeFiles/c2ffi.dir/src/Template.cpp.o
[ 46%] Building CXX object CMakeFiles/c2ffi.dir/src/Type.cpp.o
[ 53%] Building CXX object CMakeFiles/c2ffi.dir/src/c2ffi.cpp.o
[ 61%] Building CXX object CMakeFiles/c2ffi.dir/src/drivers/JSON.cpp.o
/home/michael/c2ffi/src/drivers/JSON.cpp:36:26: warning: passing an object that
      undergoes default argument promotion to 'va_start' has undefined behavior
      [-Wvarargs]
            va_start(ap, close);
                         ^
/home/michael/c2ffi/src/drivers/JSON.cpp:32:61: note: parameter of type 'bool'
      is declared here
        void write_object(const char *type, bool open, bool close, ...) {
                                                            ^
1 warning generated.
[ 69%] Building CXX object CMakeFiles/c2ffi.dir/src/drivers/Null.cpp.o
[ 76%] Building CXX object CMakeFiles/c2ffi.dir/src/drivers/Sexp.cpp.o
[ 84%] Building CXX object CMakeFiles/c2ffi.dir/src/init.cpp.o
[ 92%] Building CXX object CMakeFiles/c2ffi.dir/src/options.cpp.o
[100%] Linking CXX executable bin/c2ffi
/usr/bin/ld: error: unable to find library -lclang-cpp
c++: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
make[2]: stopped in /usr/home/michael/c2ffi/build
*** Error code 1

Stop.
make[1]: stopped in /usr/home/michael/c2ffi/build
*** Error code 1

Stop.
make: stopped in /usr/home/michael/c2ffi/build

Файл libclang-cpp.so присутствует в моем каталоге /usr/local/llvm10/lib, но cmake не обнаружить это. Я пробовал различные другие подходы, включая установку переменных среды LD_LIBRARY_PATH и CMAKE_LIBRARY_PATH, но безрезультатно; Я получил то же сообщение об ошибке, что и выше.

Я отказался от установки c2ffi на FreeBSD и попытался установить его на fre sh установку Debian 10 с LLVM 10.0 и cmake 3.18.1. Однако, когда я запустил make в Debian, я получил следующее сообщение об ошибке:

[  7%] Building CXX object CMakeFiles/c2ffi.dir/src/AST.cpp.o
/home/michael/c2ffi/src/AST.cpp:24:10: fatal error: 'clang/AST/ASTConsumer.h' file not found
#include <clang/AST/ASTConsumer.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/c2ffi.dir/build.make:82: CMakeFiles/c2ffi.dir/src/AST.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:123: CMakeFiles/c2ffi.dir/all] Error 2
make: *** [Makefile:149: all] Error 2

Мне интересно, как я могу собрать c2ffi в своих системах FreeBSD и Debian?

Ответы [ 2 ]

2 голосов
/ 08 августа 2020

На моей установке FreeBSD в CMakeLists.txt я заменил строку

target_link_libraries(c2ffi PUBLIC clang-cpp LLVM)

на

target_link_libraries(c2ffi PUBLIC /usr/local/llvm10/lib/libclang-cpp.so LLVM)

На моей установке Debian оказалось, что у меня ее не было установленных пакетов разработки libclang. После установки этого пакета я смог без проблем запустить make.

2 голосов
/ 07 августа 2020

CMakeLists.txt проекта не работает, поэтому сделайте ошибку вверх по течению. На самом деле уже подано множество запросов на вытягивание:

Вы можете попробовать их или объединить их в рабочее решение.

...