我是一个完全不懂Linux的新手。我在笔记本上安装了Mint,并最近开始尝试使用它。
我编写了一个简单的C程序并保存了文件。 然后在命令行中输入:
我编写了一个简单的C程序并保存了文件。 然后在命令行中输入:
gcc -c myfile
然后弹出了一个名为a.out的文件。我天真地(在多年使用Windows之后)期望会出现一个漂亮的.exe文件。我不知道该如何处理这个a.out文件。
gcc -c myfile
然后弹出了一个名为a.out的文件。我天真地(在多年使用Windows之后)期望会出现一个漂亮的.exe文件。我不知道该如何处理这个a.out文件。
使用-o
命名并跳过-c
:
gcc -Wall -o somefile myfile
虽然你需要给你的源文件命名为.c
扩展名。
将两个源文件编译成可执行文件的典型方法:
#Compile (the -c) a file, this produces an object file (file1.o and file2.o)
gcc -Wall -c file1.c
gcc -Wall -c file2.c
#Link the object files, and specify the output name as `myapp` instead of the default `a.out`
gcc -o myapp file1.o file2.o
gcc -Wall -o myapp file1.c file2.c
gcc -Wall -o myapp file.c
-Wall
部分的意思是“启用(几乎)所有警告” - 这是一个你应该从一开始就养成的习惯,它将节省你很多头痛调试奇怪问题的时间。
a.out
名称是旧的Unix系统中可执行文件格式的遗留物。尽管链接器现在 tend 生成ELF
而不是a.out
格式的可执行文件,但链接器默认仍然将文件命名为a.out
。a.out是可执行文件。
运行它:
./a.out
-o filename
指定了“输出文件名”。-c
指定了“仅编译,不链接”。如果您没有指定输出文件名,则编译器会根据filename.c
生成一个filename.o
,而链接器则默认为a.out
。 - Erik-ansi -pedantic
也可能很有用。默认语言gcc
编译的是“GNU-C”;并非所有编译器都能编译该语言;另一方面,所有所谓的C编译器都可以(难度不同)编译“C”。gcc -ansi -pedantic
的行为非常类似于C(ANSI C89 / ISO C90)编译器。 - pmg