博客大纲
Linux:快速写出可执行程序
确保Linux中有nano编辑器
nano指令就是打开一个编辑器,可以对指定的文件进行编辑。
有了nano编辑器,用户就可以向文件写入代码。当然,写入的也不一定是代码。
首先检查一下你的操作系统中是否有nano编辑器:使用which nano
指令。
如果结果是:/usr/bin/nano
,说明你的Linux中已经有nano编辑器了。
如果结果是:/usr/bin/which: no nano in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
,就说明你的Linux中没有安装,此时就要进行安装操作:yum install -y nano
当出现以下界面,就说明安装成功了:
[root@iZf8zdrs09p97o9xxgii5hZ csdn2]# yum install -y nano Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package nano.x86_64 0:2.3.1-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: nano x86_64 2.3.1-10.el7 base 440 k Transaction Summary ======================================================================================================================== Install 1 Package Total download size: 440 k Installed size: 1.6 M Downloading packages: nano-2.3.1-10.el7.x86_64.rpm | 440 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : nano-2.3.1-10.el7.x86_64 1/1 Verifying : nano-2.3.1-10.el7.x86_64 1/1 Installed: nano.x86_64 0:2.3.1-10.el7 Complete!
打开文件
既然我们要写代码,自然要创建一个文件来存代码。
此处有两种方式:
第一种是使用touch
创建一个文件,然后用nano
打开。
这种方式会在编辑器中拷贝原文件的内容,随后用户在原内容上增删即可。要注意这里只是拷贝了目标文件的内容到编辑器中,不一定就是修改了目标文件,这取决于最后的命名。
退出nano编辑器后,Linux系统会要求用户命名,如果最后命名的名字与现有的文件同名,则会覆盖原有文件,否则就创建一个文件。
在这种规则下,如果我们用nano打开一个有内容的文件,在nano编辑器退出时给它命名了其它的名字,此时不会对原本的文件修改,而是重新创建一个文件。这也就是为什么刚才我说”拷贝了目标文件的内容到编辑器中“,因为其有可能并不对目标文件的内容修改。
另一种是直接用nano
不接任何文件名,那么此时相当于没有拷贝任何文件的内容,用户就需要从0开始编辑。这种方式打开nano编辑器,如果最后命名时和现有文件重名,也会覆盖现有文件。
当我们使用nano编辑器后,会得到如下界面:
此处我们只需要注意^x
选项,其中^
表示ctrl键。也就是同时按住ctrl与x,就会退出nano编辑器。
当然,在退出之前,我们要先写入一些代码,我们尝试写一个简单的c语言程序,来输出"Hello Linux"。
直接按照C语言语法书写即可:
然后按住ctrl与x,退出编辑器,它会询问用户是否保存。输入Y就是保存,N就是不保存,我们在此输入Y:
随后操作系统又会让用户为这个文件命名,此处我将其命名为test.c
:
最后按回车,就能退出nano编辑器了。
我们再用ls
,会发现当前目录多出了一个test.c
文件。
[root@iZf8zdrs09p97o9xxgii5hZ csdn2]# ls 123.txt test.c
编译目标文件
当前我们写出来的文件,还只是一个普通的文本文件,他还不能作为程序跑起来,此时我们就需要一个编译器来编译它。
在此我们需要使用gcc
编译器,一样的先用which
查操作系统中是否有gcc
编译器。
如果没有,输入yum install -y gcc
即可,当出现以下界面,就说明安装成功了:
[root@iZf8zdrs09p97o9xxgii5hZ csdn2]# yum install -y gcc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.8.5-44.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: gcc x86_64 4.8.5-44.el7 base 16 M Transaction Summary ======================================================================================================================== Install 1 Package Total download size: 16 M Installed size: 37 M Downloading packages: gcc-4.8.5-44.el7.x86_64.rpm | 16 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : gcc-4.8.5-44.el7.x86_64 1/1 Verifying : gcc-4.8.5-44.el7.x86_64 1/1 Installed: gcc.x86_64 0:4.8.5-44.el7 Complete!
当我们成功安装gcc
编译器后,就可以编译目标文件了。
在此我们只需要gcc test.c
,就能完成编译,但是执行此指令,系统并不会有所反馈,如果你的Linux输出了下面的句子:
[root@iZf8zdrs09p97o9xxgii5hZ csdn2]# gcc test.c /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status
说明你的代码出现了问题,建议回去检查一下是不是你文件里的代码是不是把main
写成了mian
,或者少了#include <stdio.h>
头文件这样的操作。
如果你的使用gcc
后没有出现任何反馈,说明编译成功了,此时使用ls
查看当前目录,就会发现出现了一个以.out
结尾的文件,这就是一个可执行的程序了。
[root@iZf8zdrs09p97o9xxgii5hZ csdn2]# ls 123.txt a.out test.c
我这里的a.out
就是我得到的可执行程序,随后直接使用它就可以了:./a.out
要注意,一定要在文件名前加上./
否则找不到当前目录,可以参考博客:[Linux:家目录,根目录,隐藏文件,路径]中的隐藏文件部分。
我们输入./a.out
后,程序就执行了,屏幕上就会输出:Hello Linux:
[root@iZf8zdrs09p97o9xxgii5hZ csdn2]# ./a.out Hello Linux
博客制作不易,还请留下一个免费的赞!
有问题欢迎指出,博主非常喜欢讨论问题!