gpt4 book ai didi

c++ - 如何使用 -reduce-relocations 构建 QT

转载 作者:行者123 更新时间:2023-11-28 04:52:06 25 4
gpt4 key购买 nike

我正在使用 Ubuntu 16.04、cmake 3.10.1、QT 5.6.2。
以前都是在windows上开发应用,不知道在linux平台上怎么排错。

编译代码时出现错误

In file included from /usr/local/Qt/5.6.2/5.6/gcc_64/include/QtCore/qcoreapplication.h:37:0,
from /usr/local/Qt/5.6.2/5.6/gcc_64/include/QtWidgets/qapplication.h:37,
from /usr/local/Qt/5.6.2/5.6/gcc_64/include/QtWidgets/QApplication:1,
from /home/sulfred/Documents/SoftwareDev/github/SulfredLee/PcapReplayer/BackEnd/main.cpp:3:
/usr/local/Qt/5.6.2/5.6/gcc_64/include/QtCore/qglobal.h:1087:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)."
# error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
^

Q1.
如何验证我的 Qt 是使用 -reduce-relocations 构建的。

最佳答案

在现代 CMake 中,使用 target_compile_options() 添加 -fPIC 编译标志:

add_executable(MyExecutable ...)
target_compile_options(MyExecutable PRIVATE -fPIC)

另外,Qt常常不满足于fPIE,而是需要-fPIC。使用 CMake 变量 CMAKE_POSITION_INDEPENDENT_CODE设置 fPIC 仅适用于 library 目标。此变量会将 fPIE 添加到 executable 目标,这对于 Qt 来说是不够的。因此,请使用 target_compile_options() 显式设置 fPIC

关于c++ - 如何使用 -reduce-relocations 构建 QT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47958083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com