GCC 7.2 编译共享库而不是可执行文件
GCC 7.2 compiles shared library instead of executable
我有一台安装了 ArchLinux 的虚拟机。在这里,当我通过 运行 gcc file.c
使用 GCC 编译时,它给了我一个共享库而不是可执行文件。
后来我发现问题只与GCC 7.2有关,实际上,当我用GCC 6.4编译时,输出文件是可执行文件。
我该如何解决这个问题?
file
实用程序将您的程序称为共享库是不正确的。它是一个与位置无关的可执行文件 (PIE)。如果你真的不想要这个,你可以在 link 时指定 -no-pie
,或者用 --disable-default-pie
构建一个 gcc 工具链,但通常你不需要改变这个。
为了补充您在评论中指出的 file
的答案,GCC 生成的默认 a.out
是 不是 共享库,而是而是被 file
解释为 共享对象 可能是因为您的源代码的内容。查看 this 了解更多信息。
我有一台安装了 ArchLinux 的虚拟机。在这里,当我通过 运行 gcc file.c
使用 GCC 编译时,它给了我一个共享库而不是可执行文件。
后来我发现问题只与GCC 7.2有关,实际上,当我用GCC 6.4编译时,输出文件是可执行文件。
我该如何解决这个问题?
file
实用程序将您的程序称为共享库是不正确的。它是一个与位置无关的可执行文件 (PIE)。如果你真的不想要这个,你可以在 link 时指定 -no-pie
,或者用 --disable-default-pie
构建一个 gcc 工具链,但通常你不需要改变这个。
为了补充您在评论中指出的 file
的答案,GCC 生成的默认 a.out
是 不是 共享库,而是而是被 file
解释为 共享对象 可能是因为您的源代码的内容。查看 this 了解更多信息。