/other/Qt5.0.1/5.0.1/gcc_64/include/QtCore/qglobal.h:1079:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC or -fPIE."
似乎所有组件都被正确读取,但弹出此错误。我需要在 CMAKE 中更改什么来纠正这个问题?
我把这些行放入CMakeLists.txt
:
SET(CMAKE_CXX_FLAGS "-g -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}
${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
但这也不能解决问题。
您需要将目标构建为与位置无关的代码。您可以使用与编译器无关的方式来执行此操作POSITION_INDEPENDENT_CODE https://cmake.org/cmake/help/latest/prop_tgt/POSITION_INDEPENDENT_CODE.html.
The POSITION_INDEPENDENT_CODE
属性决定是否创建位置无关的可执行文件或共享库。该属性默认为 TrueSHARED
and MODULE
库目标和False
否则。该属性由以下值初始化CMAKE_POSITION_INDEPENDENT_CODE
变量(如果在创建目标时设置)。
目标属性如下:
set_target_properties(your_target_name PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
Note: 位置无关代码 https://en.wikipedia.org/wiki/Position-independent_code:
在计算中,位置无关代码 (PIC) 或位置无关可执行文件 (PIE) 是一组机器代码,放置在主内存中的某个位置,无论其绝对地址如何,都可以正确执行。 PIC 通常用于共享库,因此可以将相同的库代码加载到每个程序地址空间中的某个位置,该位置不会与正在使用的其他内存(例如其他共享库)重叠。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)