gcc (GCC) 10.2.0cmake版本3.19.4
CMakeFile.txt
...
test_big_endian(WORDS_BIGENDIAN)
...
cmake输出:
--检查系统是否是大端--搜索16位整数--查找sys/ the .h-查找sys/the.h-查找stdint.h -查找stdint.h -查找stddef.h --检查未签名短-检查未签名短-失败-检查未签名int的大小-检查未签名int的大小-检查未签名的int的大小-检查未签名的长-检查未签名的长-检查大小/usr/local/cmake/share/cmake-3.19/Modules/TestBigEndian.cmake:51 (消息)上的失败CMake错误:找不到合适的类型找到调用堆栈(最近一次调用):cont肋骨/xz/cmake/tuklib_integer.cmake.cmake:23 (test_big_endian)
contrib/xz/CMakeLists.txt:126 (tuklib_integer)
CMakeError.log输出:
确定是否存在包含文件sys/
的失败,其输出如下: Change:
运行构建命令:/usr/local/bin/ninja cmTC_73c6f && 1/2构建C对象CMakeFiles/cmTC_73c6f.dir/CheckIncludeFile.c.o 2/2连接C可执行cmTC_73c6f失败: cmTC_73c6f:& /usr/local/bin/gcc -cmTC_73c6f-color= -pipe -msse4.1 -msse4.2 -mpopcnt -Wall -Werror -w -fuse-ld=gold -rdynamic -Wl,--未定义的-Wl,-no-pie CMakeFiles/cmTC_73c6f.dir/CheckIncludeFile.c.o -o cmTC_73c6f & /usr/bin/ld.gold:-lgcc_s /usr/bin/ld.gold:错误:找不到-lgcc_s /lib/./lib 64/libc.a(syzab.o):函数__vsyslog_chk: error:对'_Unwind_Resume‘/lib/./lib 64/libc.a(usr.o)的未定义引用错误:对‘/lib/../lib64/libc.a(syslog.o)(.eh_frame+0xd78b):’/lib/./lib 64/libc.a的未定义引用:函数openlog:__vsyslog_chk:未定义的对'_Unwind_Resume‘/lib/../lib 64/libc.a的引用/lib/./lib 64/libc.a(backtrace.o):函数backtrace_helper: error:对'_Unwind_GetIP‘/lib/./lib 64/libc.a(backtrace.o)的未定义引用(backtrace.o):函数backtrace_helper: backtrace_helper: error:未定义的对'_Unwind_GetCFA’/lib/../lib 64/libc.a(backtrace.o)的引用:函数__backtrace:错误:未定义的对'_Unwind_Backtrace‘collect2的引用:错误:返回一个退出状态ninja: build :子命令失败。
我发现了错误发生的地方。cmake-3.19/Modules/CheckIncludeFile.cmake:
if(${VARIABLE})
if(NOT CMAKE_REQUIRED_QUIET)
message(CHECK_PASS "found")
endif()
set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining if the include file ${INCLUDE} "
"exists passed with the following output:\n"
"${OUTPUT}\n\n")
else()
if(NOT CMAKE_REQUIRED_QUIET)
message(CHECK_FAIL "not found")
endif()
set(${VARIABLE} "" CACHE INTERNAL "Have include ${INCLUDE}")
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining if the include file ${INCLUDE} "
"exists failed with the following output:\n"
"${OUTPUT}\n\n")
endif()
这个错误意味着什么?怎么修呢?
-新的
/usr/bin/ld.gold: error: cannot find -lgcc_s
由gcc旗-Wl,-no-pie
引起。为什么gcc_s
找不到?
发布于 2021-03-08 18:07:56
顺便说一句,他们在cmake 3.20中引入了CMAKE_LANG_BYTE_ORDER。
它比使用TestBigEndian:https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_BYTE_ORDER.html#variable:CMAKE_%3CLANG%3E_BYTE_ORDER更快
发布于 2021-03-08 18:02:37
其原因是ld
版本过低(2.23)。更新到版本(2.27),它工作正常。
https://stackoverflow.com/questions/66038958
复制