g2o 编译保持 unrecognized command line option “-msse4.2”的解决方法

2023-05-16

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 -------

修改完成后,编译未再报错

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

g2o 编译保持 unrecognized command line option “-msse4.2”的解决方法 的相关文章

  • 分布式开发(7)-基于redisson分布式锁解决定时任务重复执行

    定时任务在部署多台服务时会出现重复执行的问题 xff0c 所以要借助基于reidis的redisson分布式锁来保证每次只执行一次 配置 2 1 引入redisson lt dependency gt lt groupId gt org s
  • k8s学习

    集群组件 核心概念
  • 一张图看懂inner join、left join、right join的区别

  • idea创建react项目

    最近没事做想学习一点前端的知识 xff0c 由于平时都使用idea作为后端开发 xff0c 这里也使用idea来开发react 安装nodejs 直接官网下载安装 xff0c https nodejs org en download ide
  • react学习

    1 安装yarn NPM xff08 Node Package Manager xff09 作为Node js的依赖包管理器便应运而生 xff0c 而YARN则是针对NPM的一些不太优秀的地方设计开发的 npm install g yarn
  • 鸿蒙开发学习

    1 app三大组成部分 组件 屏幕展示出来的元素 xff0c 如按钮 xff0c 图片 xff0c 下载进度条布局 多个组件的摆放方式叫做布局 xff0c 组件必须添加到布局中才能够显示出来事件 可以被组件识别的操作 xff0c 如单击 双
  • dubbo远程调用HessianProtocolException: expected map/object at java.lang.Long报错解决

    调用的接口使用到了 96 List of 96 方法 xff0c 这个方法的源码是使用的 96 ImmutableCollections 96 xff0c 这个集合不支持序列化 xff0c 所以报错 xff0c 改成 96 Collecti
  • ubuntu安装minikube

    创建root账号并关闭防火墙开启ssh sudo passwd sudo ufw status sudo ufw disable sudo apt install openssh server root用户下修改源 cp etc apt s
  • kde桌面安装使用vnc

    可能大家比较习惯的都是使用ssh作为连接一个linux主机的工具 反正在这之前我是如此 不过面对新需求 xff0c 有点力不从心 xff1a linux主机上面运行了一台虚拟机 反正说白了就是瞎折腾 主机环境是archlinux 通过arc
  • centos7.5安装k8s集群

    vmware安装centos7 5 下载镜像http mirrors aliyun com centos 7 isos x86 64 xff0c 下载dvd版本即可 xff0c 有个桌面用起来比较方便
  • Ubuntu20安装k8s单机版

    1 安装kubectl xff0c 用来操作k8s curl LO 34 https dl k8s io release curl L s https dl k8s io release stable txt bin linux amd64
  • k8s学习

    1 k8s简单使用 创建一个deploy kubectl create deployment nginx image 61 nginx 暴漏pod xff0c 也就是创建一个类型为NodePort的service kubectl expos
  • 关于win11docker启动总是报一堆乱码错误的解决办法

    每次启动都会报System InvalidOperationException Failed to set version to docker desktop e后面跟一堆乱码错误 方法一 xff1a netsh winsock reset
  • java jsonarray 删除,如何使用Java删除JSONArray元素

    My JsonArray is 34 Id 34 null 34 Name 34 34 One New task 34 34 StartDate 34 34 2010 02 03T05 30 00 34 34 EndDate 34 34 2
  • Java多线程(三)——线程池及定时器

    线程池 就是一个可以复用线程的技术 前面三种多线程方法就是在用户发起一个线程请求就创建一个新线程来处理 xff0c 下次新任务来了又要创建新线程 xff0c 而创建新线程的开销是很大的 xff0c 这样会严重影响系统的性能 线程池就相当于预
  • java 使用ScheduledExecutorService实现定时轮询,包含超时时间

    首先使用这个是为了MQTT发布的时候同步订阅响应的主题返回相应的信息 xff0c mqtt不能同步返回消息就是麻烦 方案就是 xff1a 1 MQTT发布topic 2 每隔0 1秒进行轮询 xff0c 查询redis缓存的数据 3 MQT
  • mysql数据库怎么给表授权_MySQL数据库授权系统的五个表

    MySQL授权系统是由数据库中的五个表来实现 xff0c 下面就为您详细介绍这五个和MySQL授权系统相关的表 xff0c 如果您感兴趣的话 xff0c 不妨一看 MySQL服务器的特点之一是 xff0c 它在控制每个用户行为方面提供了极大
  • 二重积分x^2+y^2_计算二重积分∫∫(x^2+y^2+x)dxdy,其中D为区域x^2+y^2<=1

    答 xff1a 这是二重积分 xff0c 要确定积分上下限 积分区域的图形知道吧 xff1f 是闭环域 换成极坐标后 xff0c 角度 从0积到2 xff0c r从1积到2 表达式为 d lnr 2 rdr xff0c 注意要写积分上下限
  • QtSerialPort在ARM下面的编译问题

    这几天做一个项目 xff0c 需要用到串口通讯 由于是QT4 2 xff0c 所以没有QtSerialPort这个包 xff0c 于是在网上下载了一个 xff0c 桌面编译通过 xff0c 但是在ARM模式下始终QT编译不过 解决方式如下
  • 微型计算机技术指标主要是,微型计算机主要技术指标

    大家好 xff0c 我是时间财富网智能客服时间君 xff0c 上述问题将由我为大家进行解答 微型计算机主要技术指标有 xff1a 1 运算速度 运算速度是衡量计算机性能的一项重要指标 通常所说的计算机运算速度 平均运算速度 xff0c 是指

随机推荐