使用 ASLR(-pie) 编译会导致可执行文件被视为共享库

Compiling with ASLR(-pie) causes the executable to be seen as shared library

我正在尝试将 security flags 添加到可执行文件中,但似乎在使用 -pie(作为链接器标志)进行编译时,file 工具将其视为共享库,虽然我可以 运行 它没有问题。 这是正常的吗?这可以修复吗?

我正在使用 add_link_options(-pie)(因此所有 CMake 可执行文件都可以受益)

untitled3: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=f33e240db8bf52c2566b2cad14b4be67fdb6b35a, with debug_info, not stripped

LE:这似乎是 file 工具中的错误,已修复 here:

使用-pie 编译的可执行文件是共享对象。 file 现在有专门的支持来处理这些问题。 的答案对此进行了更详细的介绍。