Linux环境下的可运行程序的文件的后缀会.elf,它跟Windows环境下的.exe文件是一样的,都是系统可运行的程序文件,但是在Windows环境下所有的编译工作都由像VS这样的编译器给完成了,不需要程序开发人员自己手动再进行文件的编译。但是在Linux环境下,代码是需要程序开发人员自行进行编译生成系统可执行程序文件的。
接下来以一个简单的hello world的c语言程序进行编译示例简介,通过命令来实现代码的编译从而生成可执行文件。
1.将我们写好的hello world代码使用filezilla将文件传入Linux虚拟机中
2.使用xshell或者直接在本机打开命令窗口后使用find + 文件名命令查找是否成功传入文件。(一般非特别要求的情况下不建议直接使用本机进行操作。)
接下来开始进行编译:
1.gcc -E -o hello.i hello.c
该命令是将.c文件进行预编译操作,使.c文件生成.i文件,这个过程叫做预编译过程
2.gcc -S -o hello.s hello.i
该命令是将生成的.i文件生成汇编文件,也就是.s文件,这个过程叫做汇编过程
3.gcc -c -o hello.o hello.s
该命令是将生成的.s文件生成.o文件,这个过程叫做编译过程
4.gcc -o hello.elf hello.o
该命令是将生成的.o文件生成可执行的.elf文件,这个过程叫做链接过程。
总结:预编译---->汇编---->编译过程---->链接过程
上边的命令步骤就完成了对一个.c文件的可执行编译,使用pwd+文件名命令可以查看到编译好的文件的路径,然后输入相关路劲就可以进行运行,这个叫绝对路径的运行方式。也可以使用相对路径的方式来进行运行操作具体的操作命令就是__ ./文件名 __。
也可以直接对.o文件进行chmod命令,具体的命令是 chmod +X hello.o。
如有错误还请指出,讲的不好多多见谅!谢谢小伙伴们!