Loading

gcc9编译memcpy报错writing to an object of a non-trivial type解决

问题

Ubuntu 18.04升级至20.04后系统自带gcc也由7.5升级至9.3出现兼容性问题
原先可以编译的c++工程如今报错

error: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of a non-trivial type ... leaves 94 bytes unchanged [-Werror=class-memaccess]

解决

g++高版本检查更加严格,确定程序没有问题
通过向CMakeLists.txt中传入-Wno-error=class-memaccess参数抑制错误
例如

# Set C/CXX compiler flags.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wno-error=deprecated-declarations -fstack-protector-strong -Wno-error=strict-aliasing -Wno-error=class-memaccess")
set(CMAKE_CXX_STANDARD 11)

参考

gcc8 compiler error: class-memaccess · Issue #2931 - GitHub

posted @ 2021-06-16 23:52  azureology  阅读(1668)  评论(0)    收藏  举报