У меня проблемы с установкой 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?