Reputation: 884
I have a virtual machine with ArchLinux installed. Here when I compile with GCC by running gcc file.c
it gives me a shared library instead of an executable.
Later I find out that the problem is related only to GCC 7.2, in fact, when I compile with GCC 6.4, the output file is an executable.
How do I fix this?
Upvotes: 1
Views: 2075
Reputation: 789
To complement the answer that mentioned file
as you pointed out in the comments, the default a.out
generated by GCC is not a shared library but instead interpreted as a shared object by file
maybe because of the content of your source code. Check this for more information.
Upvotes: 1
Reputation: 215193
The file
utility is just incorrect in calling your program a shared library. It is a position-independent executable (PIE). If you really don't want this, you can specify -no-pie
at link time, or build a gcc toolchain with --disable-default-pie
, but in general you shouldn't need to change this.
Upvotes: 4