pthread.h:40:10: fatal error: bits/types/struct___jmp_buf_tag.h:No such file or directory
-
Hello everyone,I am attempting to cross-compile Qt 6.7.3 source code for the ARMhf architecture on Ubuntu 18.04. The CMake build process succeeds, but when executing the compilation, I encounter the following error:
[2/2] Cleaning all built files... Cleaning... 48 files. [18/11038] Building C object qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_jit_compile.c.o FAILED: qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_jit_compile.c.o /opt/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc --sysroot=/home/lucasyuen/sysroot -DHAVE_CONFIG_H -DPCRE2_CODE_UNIT_WIDTH=16 -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_NO_AS_CONST -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/home/lucasyuen/qt/qt6-cross/qt-everywhere-src-6.7.3/qtbase/src/3rdparty/pcre2/src -I/home/lucasyuen/qt/qt6-cross/qt-everywhere-src-6.7.3/qtbase/mkspecs/devices/linux-zynq-g++ -I/home/lucasyuen/qt/qt6-cross/build/qtbase/include --sysroot=/home/lucasyuen/sysroot -fPIC -Wl,-rpath-link,/home/lucasyuen/sysroot/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/lucasyuen/sysroot/usr/lib/arm-linux-gnueabihf -L/home/lucasyuen/sysroot/lib -L/home/lucasyuen/sysroot/lib/arm-linux-gnueabihf -L/home/lucasyuen/sysroot/usr/lib/arm-linux-gnueabihf -I/home/lucasyuen/sysroot/usr/include -I/home/lucasyuen/sysroot/usr/include/arm-linux-gnueabihf -pipe -O2 -std=c11 -fPIC -fvisibility=hidden -w -fno-exceptions -MD -MT qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_jit_compile.c.o -MF qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_jit_compile.c.o.d -o qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_jit_compile.c.o -c /home/lucasyuen/qt/qt6-cross/qt-everywhere-src-6.7.3/qtbase/src/3rdparty/pcre2/src/pcre2_jit_compile.c In file included from /home/lucasyuen/qt/qt6-cross/qt-everywhere-src-6.7.3/qtbase/src/3rdparty/pcre2/src/sljit/sljitUtils.c:39, from /home/lucasyuen/qt/qt6-cross/qt-everywhere-src-6.7.3/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.c:319, from /home/lucasyuen/qt/qt6-cross/qt-everywhere-src-6.7.3/qtbase/src/3rdparty/pcre2/src/pcre2_jit_compile.c:85: /opt/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/lib/gcc/arm-none-linux-gnueabihf/11.3.1/include-fixed/pthread.h:40:10: fatal error: bits/types/struct___jmp_buf_tag.h: 没有那个文件或目录 40 | #include <bits/types/struct___jmp_buf_tag.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. [27/11038] Building C object qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_match.c.o ninja: build stopped: subcommand failed.
Upon inspecting the error path, it turns out that the file struct___jmp_buf_tag.h is not present in the bits directory. However, the file is actually located at the following path: /opt/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/include/bits/types/struct___jmp_buf_tag.h.
My host system is running GLIBC 2.28 and GCC 11.4.0, which were upgraded via PPA, and the cross-compiler is the ARM GNU 11.3.0 toolchain. I have attempted to resolve the issue by creating symbolic links and modifying the paths in the pthread.h header file, but these solutions have not worked. I have also tried various versions of the ARM GNU toolchain (10.3 to 13.1), but the problem persists. I am now out of ideas and am seeking help from experts.