Я пытаюсь выполнить кросс-компиляцию программы qt5 для raspberry pi, используя CMake, и не могу пройти через ошибку: Failed to find "GL/gl.h" in "/usr/include/libdrm"
.Я просто опубликую все, что я сделал, и я надеюсь, что кто-то поможет.
Мой файл CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(RPQT_server)
set(Qt5_DIR "/home/int-krta/Qt/5.11.1/gcc_64/lib/cmake/Qt5")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5 COMPONENTS Widgets Network CONFIG REQUIRED)
file(GLOB HEADERS "include/*.h")
file(GLOB SOURCES "src/*.cpp")
set(RPQT_server_SRCS ${SOURCES})
set(RPQT_server_MOC_HDRS ${HEADERS})
qt5_wrap_cpp(RPQT_server_CPP_FILES ${RPQT_server_MOC_HDRS})
add_executable(${PROJECT_NAME} ${RPQT_server_SRCS} ${RPQT_server_CPP_FILES})
set(RPQT_server_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${RPQT_server_HEADER_DIR})
target_link_libraries(RPQT_server Qt5::Widgets Qt5::Network)
Мой файл Toolchain.cmake:
set(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER $ENV{HOME}/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/crosscompile_toolchain/rootfs)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --sysroot=${CMAKE_FIND_ROOT_PATH}")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --sysroot=${CMAKE_FIND_ROOT_PATH}")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --sysroot=${CMAKE_FIND_ROOT_PATH}")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
INCLUDE_DIRECTORIES($ENV{HOME}/crosscompile_toolchain/rootfs/opt/vc/include)
INCLUDE_DIRECTORIES($ENV{HOME}/crosscompile_toolchain/rootfs/opt/vc/include/interface/vcos/pthreads)
INCLUDE_DIRECTORIES($ENV{HOME}/crosscompile_toolchain/rootfs/opt/vc/include/interface/vmcs_host/linux)
Я запускаю эту команду cmake:
cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_TOOLCHAIN_FILE=$HOME/crosscompile_toolchain/Toolchain-RaspberryPi.cmake $HOME/training_projects/RPQT_server
и вывод:
-- The C compiler identification is GNU 4.8.3
-- The CXX compiler identification is GNU 4.8.3
-- Check for working C compiler: /home/int-krta/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc
-- Check for working C compiler: /home/int-krta/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/int-krta/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
-- Check for working CXX compiler: /home/int-krta/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /home/int-krta/Qt/5.11.1/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:9 (message):
Failed to find "GL/gl.h" in "/usr/include/libdrm".
Call Stack (most recent call first):
/home/int-krta/Qt/5.11.1/gcc_64/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:171 (include)
/home/int-krta/Qt/5.11.1/gcc_64/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:89 (find_package)
/home/int-krta/Qt/5.11.1/gcc_64/lib/cmake/Qt5/Qt5Config.cmake:28 (find_package)
CMakeLists.txt:6 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/int-krta/crosscompile_toolchain/build/CMakeFiles/CMakeOutput.log".
Я установил библиотеки, такие как mesa-common-dev и несколько других, ничего не помогло,Я делаю что-то неправильно?Или я что-то пропустил?
РЕДАКТИРОВАТЬ: мне удалось исправить эту ошибку благодаря комментарию Цыварева, установив правильные библиотеки на машине TARGET, то есть Raspberry Pi, так что теперь cmake
успешно и файлы сборки сохраняются, но когда япопробуйте использовать make
У меня ошибка компоновки:
/home/int-krta/Qt/5.11.1/gcc_64/lib/libQt5Widgets.so.5.11.1: file not recognized: File format not recognized
И если я нашел хорошее решение, мне нужно сделать свою версию Qt сейчас, поэтому в папке qtbase я запускаю команду:
./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=$HOME/crosscompile_toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot /media/int-krta/rootfs -prefix /usr/local/qt5pi -no-gcc-sysroot -opensource -confirm-license
Я получаю это и не знаю, что делать дальше:
ERROR: Feature 'opengles2' was enabled, but the pre-condition 'config.win32 || (!config.watchos && !features.opengl-desktop && libs.opengl_es2)' failed.
ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.
Я делаю это совершенно неправильно или что, кто-то может подсказать мне, что делать дальше?