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
博客制作不易,还请留下一个免费的赞!
有问题欢迎指出,博主非常喜欢讨论问题!
浙公网安备 33010602011771号