Cross Compiling GLIBC MISSMATCH, aber OK für GLIBCXXLinux

Linux verstehen
Anonymous
 Cross Compiling GLIBC MISSMATCH, aber OK für GLIBCXX

Post by Anonymous »

Hallo, ich bin Cross Compiling Form eine x86 Ubuntu -Maschine, um ARMV8 -Umgebung zu sein. Ich verwende QT6. Dies war erfolgreich. Meine Toolchain.cmake -Datei ist unten gezeigt. aArch64-linux-gnu-g ++-12 als mein Compiler. Dies liegt daran, dass ich beim Kompilieren einer einfachen C ++ -Hello -Welt entdeckte, dass das Ziel libstdc ++ mit glibcxx_3.4.30 und glibc_2.34 hatte. Dies ist die Version von libstdc ++. So installiert mit AARG64-linux-gnu-g ++-12 (befindet sich in/usr/lib/gcc-cross/aArch64-linux-gnu/12/) und entspricht der Version auf meinem Ziel. Ich kann auch auf dem Ziel sehen, dass 12 die neueste G ++ - Version ist, die auf dem Ziel installiert ist. Alles gut für libcstd ++
Das Problem, das ich habe, ist, dass bei dem Überqueren von QT auf libc.so beruht. GLIBC_2.39 Aber das Ziel hat nur GLIBC_2.36 verfügbar. libc.so für Cross -Compile -Umgebung < /li>
Jagen Sie in der QT -Cmake -Datei und zwingen Sie sie, libc statisch zu verknüpfen. Während die beiden anderen mehr Fummeln und Aufrufe erfordern und die Größengröße des QT-Projekts auf dem Laufenden halten, bin ich durch #4. libstdc ++? < /li>
Gibt es eine andere Möglichkeit, Libc zu kompilieren, um eine ältere Version auf meinem Kreuzkompilieren zu erhalten? Ich weiß, dass ich eine neue Version bekommen muss, die ich kompilieren muss, aber zurückrollen kann? < /Li>
Eine andere Lösung?

Code: Select all

cmake_minimum_required(VERSION 3.18)
include_guard(GLOBAL)

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(TARGET_SYSROOT /home/tommy/projects/rPi4_OS/crossCompile/rpi-s
set(CMAKE_SYSROOT ${TARGET_SYSROOT})

set(ENV{PKG_CONFIG_PATH} $PKG_CONFIG_PATH:/usr/lib/pkgconfig)
set(ENV{PKG_CONFIG_LIBDIR} /usr/lib/pkgconfig:/usr/share/pkgconfig
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})

# if you use other version of gcc and g++ than gcc/g++ 12,  you mus
set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc-12)
set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++-12)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${TARGET_SYSROOT}/usr/includ
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")

set(QT_COMPILER_FLAGS "-march=armv8-a")
set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe -DNDEBUG")
set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_BUILD_RPATH ${TARGET_SYSROOT})

include(CMakeInitializeConfigs)

function(cmake_initialize_per_config_variable _PREFIX _DOCSTRING)
if (_PREFIX MATCHES "CMAKE_(C|CXX|ASM)_FLAGS")
set(CMAKE_${CMAKE_MATCH_1}_FLAGS_INIT "${QT_COMPILER_FLAGS}")

foreach (config DEBUG RELEASE MINSIZEREL RELWITHDEBINFO)
if (DEFINED QT_COMPILER_FLAGS_${config})
set(CMAKE_${CMAKE_MATCH_1}_FLAGS_${config}_INIT "${QT_COMPILER_FLA
endif()
endforeach()
endif()

if (_PREFIX MATCHES "CMAKE_(SHARED|MODULE|EXE)_LINKER_FLAGS")
foreach (config SHARED MODULE EXE)
set(CMAKE_${config}_LINKER_FLAGS_INIT "${QT_LINKER_FLAGS}")
endforeach()
endif()

_cmake_initialize_per_config_variable(${ARGV})
endfunction()

set(XCB_PATH_VARIABLE ${TARGET_SYSROOT})

set(GL_INC_DIR ${TARGET_SYSROOT}/usr/include)
set(GL_LIB_DIR ${TARGET_SYSROOT}:${TARGET_SYSROOT}/usr/lib/aarch64-linux-g

set(EGL_INCLUDE_DIR ${GL_INC_DIR})
set(EGL_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libEGL.so)

set(OPENGL_INCLUDE_DIR ${GL_INC_DIR})
set(OPENGL_opengl_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/l

set(GLESv2_INCLUDE_DIR ${GL_INC_DIR})
set(GLESv2_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libGLESv

set(gbm_INCLUDE_DIR ${GL_INC_DIR})
set(gbm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libgbm.so)

set(Libdrm_INCLUDE_DIR ${GL_INC_DIR})
set(Libdrm_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libdrm.so)

set(XCB_XCB_INCLUDE_DIR ${GL_INC_DIR})
set(XCB_XCB_LIBRARY ${XCB_PATH_VARIABLE}/usr/lib/aarch64-linux-gnu/libxcb.so)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post