gpt4 book ai didi

linux - 如何构建在 Linux 上动态链接的 qt 应用程序(非共享库)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:20 24 4
gpt4 key购买 nike

我想构建一个与共享库链接的 qt 应用程序(默认情况下是 qt 应用程序)。但是qt总是把app编译成共享库。我知道这是可能的,因为我发现了几个动态链接的 Linux 应用程序(不是共享库)。例如,大多数 KDE 应用程序是用 Qt 编写的,但仍然是应用程序,而不是共享库。是否有允许我在 Linux 上构建 qt 应用程序 的编译器/链接器标志?请不要回答 -static

最佳答案

它们不是共享库,而是普通应用程序。

在现代 GNU/Linux 系统上,程序被编译为 PIE(位置独立可执行文件)。出于安全原因,这样做是为了允许程序的 text 部分(即代码)在每次运行程序时加载到新的随机地址。

从 ELF/内核的角度来看,加载 PIE 程序的过程与加载 PIC 共享库的过程极为相似,因此 PIE 可执行文件具有 ELF 类型 ET_DYN,这是共享库。

因此,一些程序,如 file(1),会将它们识别为共享库,但它们不是共享库。

关于linux - 如何构建在 Linux 上动态链接的 qt 应用程序(非共享库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51273595/

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