GCC 7.2编译共享库而不是可执行文件

时间:2017-10-03 18:34:03

标签: c linux gcc archlinux

我安装了ArchLinux的虚拟机。这里当我通过运行gcc file.c与GCC一起编译时,它给了我一个共享库而不是可执行文件。

后来我发现问题只与 GCC 7.2 有关,事实上,当我使用 GCC 6.4 进行编译时,输出文件是可执行文件。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

file实用程序在将程序称为共享库时不正确。它是一个与位置无关的可执行文件(PIE)。如果你真的不想这样,你可以在链接时指定-no-pie,或者用--disable-default-pie建立一个gcc工具链,但一般来说你不应该改变它。 / p>

答案 1 :(得分:1)

为了补充您在评论中指出的file提及的答案,GCC生成的默认a.out 是共享库,而是被解释为<由file创建的em>共享对象可能是因为源代码的内容。查看this了解详情。