And*_*eas 5 c++ linux gcc mime-types
给出以下C++代码'mini.cpp':
#include "iostream"
using namespace std;
int main() {
cout << "Hello World" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和编译器命令:
g++ -o hello mini.cpp
Run Code Online (Sandbox Code Playgroud)
的结果
mimetype hello
Run Code Online (Sandbox Code Playgroud)
是
hello: application/x-sharedlib
Run Code Online (Sandbox Code Playgroud)
如何将'application/x-application'作为mime类型?
我在Kubuntu上使用gcc 6.2.0.
小智 9
gcc不设置mime类型.mimetype根据文件的内容猜出适当的mime类型.对于ELF文件(大多数编译的二进制文件和共享库),标头包含一个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.
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |