Vim的使用(反汇编学习的开始)
实验室的服务器上不好用可视化,所以需要使用vim来编写程序。
vim还是不太好用的。
1.在命令模式下输入 i 进入编辑模式
2.在编辑模式下输入 esc 退出编辑模式
3.怎么退出?在命令模式下输入 : 进入底部命令模式。 输入 wq 即可保存退出。
4.怎么设置当前文件名? 如果不是例如vim test.cpp进入vim的话,而是直接vim进入vim,那么就不能正常退出,因为你当前编辑的内容没有一个文件名和文件路径来保存。此时可以输入w test.cpp,即可将当前内容保存到test.cpp当中去。当然加上路径名也是可以的。
5.注意vim“卡死”,注意不是vim卡死,可能是不小心按到了Ctrl + s,这个时候按Ctrl+q就能恢复正常
有了vim即可开始学习汇编与反汇编了。
下面开始进行第一个项目:输出hello world。
在vim当中编写一个1.cpp
需要注意的一点就是,gcc是专门针对c语言的编译器,不能直接拿来编译c++程序。
比如,我们再来编写一个真正的c++程序2.cpp:
然后尝试用gcc编译它
会报错。
参考这篇博客:https://blog.csdn.net/wsx1234da/article/details/54730697
因为gcc没办法自动链接c++所需要的库。这需要g++来完成。事实上,g++同样是用gcc来编译c++程序的,只是在链接的过程当中使用了g++来链接。
临时插播一下:学习一下gcc的参数:gcc -o 选项用来指定输出文件,如果不使用 -o 选项,那么将采用默认的输出文件。例如默认情况下,生成的可执行文件的名字默认为 a.out。如下图:
这就是直接执行 gcc 1.cpp 这条命令所获得的结果 , 因为1.cpp当中保存的是c语言文件,那么gcc就能够运行成功,直接就能够出来可执行文件。但是因为没有指定可执行文件的名字,所以默认获得a.out。下面就执行一下:
而gcc -o就是可以指定可执行文件名的命令。比如下面:
就生成了可执行文件12345。
gcc说明结束。
然后继续说明gcc为什么不能链接c++可执行库。
gcc -c 可以只编译文件,不执行文件。运行如下命令:
然后就生成了2.cpp的编译之后的文件2.o
然后gcc 2.o -o 2 ,尝试将2.o这个编译后的文件链接成可执行文件2
出现了和运行gcc 2.cpp同样的结果。说明gcc将2.cpp这个文件链接到c++失败。
此时我们可以运行 gcc 2.o -o 2 -lstdc++
发现链接成功了,生成了可执行文件。