arm64的板,编译g2o库,报错;
找到了Github上类似的问题GitHub相关问题描述链接
通过git checkout 4b9c2f5b68d14ad479457b18c5a2a0bce1541a90
命令同步解决方案。我这边是直接修改Cmakelist.txt文件。
修改的内容github 变更详情
找到以下内容
IF(NOT "${ARCH}" MATCHES "arm")
# Generic settings for optimisation
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse4.2")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse4.2")
ENDIF()
替换为
# Start of SSE* autodetect code
# (borrowed from MRPT CMake scripts, BSD)
OPTION(DO_SSE_AUTODETECT "Enable autodetection of SSE* CPU sets and enable their use in optimized code" ON)
IF(NOT EXISTS "/proc/cpuinfo")
SET(DO_SSE_AUTODETECT OFF)
ENDIF()
IF (DO_SSE_AUTODETECT)
FILE(READ "/proc/cpuinfo" G2O_CPU_INFO)
ENDIF()
# Macro for each SSE* var: Invoke with name in uppercase:
macro(DEFINE_SSE_VAR _setname)
string(TOLOWER ${_setname} _set)
IF (DO_SSE_AUTODETECT)
# Automatic detection:
SET(CMAKE_G2O_HAS_${_setname} 0)
IF (${G2O_CPU_INFO} MATCHES ".*${_set}.*")
SET(CMAKE_G2O_HAS_${_setname} 1)
ENDIF()
ELSE (DO_SSE_AUTODETECT)
# Manual:
SET("DISABLE_${_setname}" OFF CACHE BOOL "Forces compilation WITHOUT ${_setname} extensions")
MARK_AS_ADVANCED("DISABLE_${_setname}")
SET(CMAKE_G2O_HAS_${_setname} 0)
IF (NOT DISABLE_${_setname})
SET(CMAKE_G2O_HAS_${_setname} 1)
ENDIF (NOT DISABLE_${_setname})
ENDIF (DO_SSE_AUTODETECT)
endmacro(DEFINE_SSE_VAR)
# SSE optimizations:
DEFINE_SSE_VAR(SSE2)
DEFINE_SSE_VAR(SSE3)
DEFINE_SSE_VAR(SSE4_1)
DEFINE_SSE_VAR(SSE4_2)
DEFINE_SSE_VAR(SSE4_A)
# Add build flags for clang AND GCC
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
# SSE2?
IF (CMAKE_G2O_HAS_SSE2)
add_compile_options(-msse2)
ENDIF()
# SSE3?
IF (CMAKE_G2O_HAS_SSE3)
add_compile_options(-msse3 -mssse3)
ENDIF()
# SSE4*?
IF (CMAKE_G2O_HAS_SSE4_1)
add_compile_options(-msse4.1)
ENDIF()
IF (CMAKE_G2O_HAS_SSE4_2)
add_compile_options(-msse4.2)
ENDIF()
IF (CMAKE_G2O_HAS_SSE4_A)
add_compile_options(-msse4a)
ENDIF()
endif()
# End of of SSE* autodetect code -------
修改完成后,编译未再报错