2.编译器
在linux下,当然是GCC。看看版本。
# gcc --version
gcc (GCC) 4.1.1 20061011 (Red Hat 4.1.1-30)
Copyright (C) 2006 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;包括没有适销性和某一专用目的下的适用性担保。
3.运行
编译生成的文件在终端中可以直接运行:#./filename
准备好了,开始我们的“Hello World!”
在用户主文件夹下建一个文件夹Tests。在终端中输入nedit打开编辑器,新建文件,并保存为Tests文件夹下的test.c文件。这样nedit就能够高亮显示C语言的语法关键词。输入一下代码:
int main(int argc,char **argv)
{
printf("Hello World!/n");
}
在VC下我们写完这样的一个小函数,只要点击编译,VC就给我们编译好了。这是因为有一个工作VC帮我们做了,那就是写makefile,VC知道我们需 要编译哪些文件,并自动产生编译用的makefile。在VC中我们也可以导出makefile,也就是.mak结尾的文件。而在linux下,就需要我 们自己编写makefile,来告诉编译器GCC编译链接文件时的规则和依赖关系。因此我们要编译生成执行文件,就要为其编写makefile文件。我先 前转载的《一起写makefile》有用了。
我们在Tests目录下,建立一个名为makefile的文件。用gedit打开编辑.
test: test.o //执行文件test依赖于文件test.o
gcc -o test -g test.o //-o 输出执行文件名为test,-g 支持源码debug
test.o: test.c //test.o依赖于test.c
gcc -c -g test.c
clean: //定义了一个命令clean,默认make从文件头开始
rm test test.o //移除文件test,test.o
保存这样的一个makefile文件,打开终端,cd到tests目录。
#make
你将看到:
gcc -c -g test.c
gcc -o test -g test.o
先后顺序变了,这就是依赖关系的体现;如果你不想看到这些信息也可以
#make -s
这样你的目录下就多了两个文件,test和test.o
如果要删除这两个文件,我们也有一个clean命令
#make clean
这两个文件已经被删除了。
看看成果,#./test
输出Hello World!啦。
到此,Hello World! 就结束了。
我们在学C语言的时候,好像在写main函数的时候可以不需要参数,而且返回类型也可以是void型。而这里却写成了 int main(int argc,char **argv)有所不同。
检验一下返回类型,改写为:
void main(int argc,char **argv)
{
printf("Hello World!/n");
}
保存->make,提示:
在函数 ‘main’ 中:
警告:‘main’ 的返回类型不是 ‘int’
由此可知这里的main函数的返回类型应该为int,否则就有warning;
再改写:
int main(int argc,char **argv)
{
printf("Hello World!/n");
printf("argc == %d/n",argc);
printf("argv[0] == %s/n",argv[0]);
printf("argv[1] == %s/n",argv[1]);
}
保存->make,通过编译了。
#./test Hello_World
结果输出:
Hello World!
argc == 2
argv[0] == ./test
argv[1] == Hello_world
结果,已经显示了main的参数的作用。这样的用法在学C的时候就很少提,如果一直在windows下写程序,可能也很少注意到这样的用法。而在编写一些DOS下运行的小工具的时候就需要这样的用法了。
Linux下的“Hello world!”
最新推荐文章于 2021-03-02 09:03:08 发布