Как скомпилировать BCC на Ubuntu 20.04?

Я пытаюсь скомпилировать структуру BCC BPF (https://github.com/iovisor/bcc) на Убунту 20.04. Я выполнил все инструкции для 18.04, но, конечно; они терпят неудачу.

Проблема, которая у меня есть, кажется, связана с clang, хотя

In file included from /usr/local/include/clang/Frontend/CompilerInstance.h:15,
                 from /home/matt/code/bpf/bcc/src/cc/frontends/clang/loader.cc:43:
/usr/local/include/clang/Frontend/CompilerInvocation.h:157:15: note: candidate: ‘static bool clang::CompilerInvocation::CreateFromArgs(clang::CompilerInvocation&, llvm::ArrayRef<const char*>, clang::DiagnosticsEngine&)’
  157 |   static bool CreateFromArgs(CompilerInvocation &Res,
      |               ^~~~~~~~~~~~~~
/usr/local/include/clang/Frontend/CompilerInvocation.h:157:15: note:   candidate expects 3 arguments, 4 provided
make[2]: *** [src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/build.make:63: src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/loader.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:982: src/cc/frontends/clang/CMakeFiles/clang_frontend.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Как мне получить компиляцию BCC в Ubuntu 20.04?


person horseyguy    schedule 23.05.2020    source источник
comment
Какая у вас версия Clang?   -  person pchaigno    schedule 24.05.2020
comment
Я пробовал все версии от 6 до 10. Однако, когда я использую, посмотрите, как он компилируется, он использует /usr/bin/c++ для компиляции, то есть g++, а не clang...   -  person horseyguy    schedule 24.05.2020
comment
Вы компилируете bcc с помощью gcc, но затем bcc компилирует программу в BPF с помощью Clang. Для этого он использует libclang и libllvm. Чтобы узнать, какую версию LLVM/Clang он использует, вы можете проверить вывод команды cmake во время установки.   -  person pchaigno    schedule 24.05.2020
comment
ой ну спасибо! :) Вы знаете, какие версии clang/llvm bcc поддерживает?   -  person horseyguy    schedule 24.05.2020
comment
Все должно начинаться с 3.7, но возможны проблемы с последними выпусками или, может быть, с самыми старыми, если они не были должным образом протестированы. Если вы скажете мне, с какой версией у вас есть эта проблема, я могу попытаться воспроизвести и, возможно, исправить это.   -  person pchaigno    schedule 24.05.2020
comment
Спасибо, я не совсем уверен, какие строки мне следует искать, но я вижу as -I /usr/lib/llvm-8/include/../tools/clang/include -I /home/mark/code/bpf/bcc/src -I /home/mark/code/bpf/bcc/build/src -I /home/mark/code/bpf/bcc/build/src/cc -I /home/mark/code/bpf/bcc/src/cc -I /home/mark/code/bpf/bcc/build/src/cc/frontends/b -I /home/mark/code/bpf/bcc/src/cc/frontends/b -I Итак, я предполагаю, что это llvm-8 ?   -  person horseyguy    schedule 24.05.2020
comment
Ах, может быть, это то, что вам нужно: ``` $ cmake .. -- Последний распознанный тег Git — v0.14.0 -- Git HEAD — ceb458d6a07a42d8d6d3c16a3b8e387b5131d610 -- Версия 0.14.0-ceb458d6 -- Найдено LLVM: /usr/lib/ llvm-8/include 8.0.1 -- Использование static-libstdc++ -- НЕ удалось найти LuaJIT (отсутствует: LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR) Предупреждение CMake at testings/python/CMakeLists.txt:6 (сообщение): рекомендуемая тестовая программа 'arping' не найдена ```   -  person horseyguy    schedule 24.05.2020
comment
@FUJI Ответ Горо сработал для меня ... мне нужно было использовать -DCMAKE_PREFIX_PATH=/usr/lib/llvm-7, чтобы заставить его работать. Я думаю, вы, ребята, должны добавить это в свой README, так как это вызвало у меня много слез, хе-хе   -  person horseyguy    schedule 25.05.2020
comment
Я больше не вношу большого вклада в этот проект, поэтому, вероятно, будет лучше, если вы сообщите об этом напрямую (о поломке версии, а не об изменении документации, поскольку она должна работать для всех версий › 3.7 AFAIK).   -  person pchaigno    schedule 25.05.2020


Ответы (1)


Начиная с BCC v0.14.0-a28337a, мне нужно использовать llvm-7 вместо последней версии LLVM. Кроме того, требуется -DPYTHON_CMD=python3 или установка Python2, поскольку Python 2 больше не устанавливается по умолчанию. Другие зависимости, перечисленные в https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---source.

Я могу собрать его на своей виртуальной машине Ubuntu 20.04.

cmake -Bbuild -DPYTHON_CMD=python3 -DCMAKE_PREFIX_PATH=/usr/lib/llvm-7
make -Cbuild
person FUJI Goro    schedule 25.05.2020