gpt4 book ai didi

c++ - gcc 创建 mime 类型 application/x-sharedlib 而不是 application/x-application

转载 作者:IT王子 更新时间:2023-10-29 01:13:03 30 4
gpt4 key购买 nike

给定以下 C++ 代码“mini.cpp”:

#include "iostream"

using namespace std;

int main() {
cout << "Hello World" << endl;
return 0;
}

和编译器命令:

g++ -o hello mini.cpp

结果

mimetype hello

hello: application/x-sharedlib

如何将“application/x-application”作为 MIME 类型?

我在 Kubuntu 上使用 gcc 6.2.0。

最佳答案

gcc 不设置 mime 类型。 mimetype 根据文件内容猜测合适的 mime 类型。对于 ELF 文件(大多数编译的二进制文件和共享库),the header包含标识其类型的字段 e_type。如果它是 ET_DYN,那么 mimetype 会将其视为共享库。

默认情况下,gcc/ld 将生成将 e_type 设置为 ET_EXEC 的二进制文件,这些二进制文件被检测为 application/x-executable。当使用命令行选项 -pie 时,会创建一个与位置无关的可执行文件,它可以像共享库一样在不同的地址加载并仍然有效。因为这与共享库非常相似,所以为了避免对加载程序进行太多更改,此类二进制文件被标记为 ET_DYN,即使它们可以直接执行也是如此。

某些 Linux 发行版(包括您的发行版)已将 -pie 设置为默认值。仍然可以用 -no-pie 覆盖它,但是误检测 mime 类型的事实不应被视为错误,除非您知道自己在做什么,否则您不应该这样做覆盖它。 -pie 允许一些额外的安全保护,这些保护从根本上与 -no-pie 不兼容。

关于c++ - gcc 创建 mime 类型 application/x-sharedlib 而不是 application/x-application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41398444/

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