diff --git a/CMakeLists.txt b/CMakeLists.txt index c44db44..fb3cebd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: CC0-1.0 @@ -7,5 +7,8 @@ project(deepin-ocr) option(DOTEST "option for test" OFF) +# 启用位置无关代码,提高安全性(ASLR) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + #deepin-ocr add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6d8563b..fccecb7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: CC0-1.0 @@ -44,13 +44,17 @@ if(DOTEST) endif() endif() +# sw_64 上运行时有崩溃, 所以暂时排除该架构 if (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "sw_64") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wl,--as-need -fPIE") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=incompatible-pointer-types -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wl,--as-need -fPIE -Wno-error=incompatible-pointer-types") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie -Wl,-z,relro -Wl,-z,now") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") endif() +# 启用只读重定位/立即绑定,以提高安全性 +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now") + find_package(Qt${QT_VERSION_MAJOR} REQUIRED ${QtModule}) add_definitions(${QT_DEFINITIONS}) @@ -198,6 +202,9 @@ if(DOTEST) ) endif() +# 启用位置无关可执行文件,提高安全性 +target_link_options(${PROJECT_NAME} PRIVATE -pie) + # dde项目,期望CMAKE_INSTALL_PREFIX为/usr if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr)