C++高薪面试项目 --- 笔记(第一章)
1.1 Linux开发环境搭建
1.安装Linux系统(虚拟机安装、云服务器) https://releases.ubuntu.com/bionic/ 2.安装XSHELL、XFTP https://www.netsarang.com/zh/free-for-home-school/ 3.安装Visual Studio Code https://code.visualstudio.com/
1.2 gcc 和 g++
- GCC(GNU Compiler Collection,GNU编译器套件)是由 GNU 开发的编程语言 译器。GNU 编译器套件包括 C、C++、Objective-C、Java、Ada 和 Go 语言前 端,也包括了这些语言的库(如 libstdc++,libgcj等)
- 是因为 gcc命令不能自动和 C++ 程序使用的库联接,所以通常用 g++ 来完成链接,为了统 一起见,干脆编译/链接统统用 g++ 了
- 安装命令 sudo apt install gcc g++
- 查看版本 gcc/g++ -v/--version
1.3 静态库、动态库的制作
- 库文件有两种,静态库和动态库(共享库)。
- 区别是:静态库在程序的链接阶段被复制到了程序中;
动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。
- 库的好处:1.代码保密 2.方便部署和分发
静态库的制作:
- Linux : libxxx.a
- gcc 获得 .o 文件
- 将 .o 文件打包,使用 ar 工具(archive)
- ar rcs libxxx.a xxx.o xxx.o r – 将文件插入备存文件中 c – 建立备存文件 s – 索引
动态库的制作:
- Linux : libxxx.so
- gcc 得到 .o 文件,得到和位置无关的代码 gcc -c –fpic/-fPIC a.c b.c
- gcc 得到动态库 gcc -shared a.o b.o -o libcalc.so
1.4 Makefile
- Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编 译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 文件就 像一个 Shell 脚本一样,也可以执行操作系统的命令。
- make 是一个命令工具,是一个解释 Makefile 文件中指令的命令工具,一般来说,大多数的 IDE 都有这个命令,
比如 Delphi 的 make,Visual C++ 的 nmake,Linux 下 GNU 的 make。
1.5 GDB 调试
- GDB 是由 GNU 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境,
GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。
- GDB 主要帮助你完成下面四个方面的功能:
- 启动程序,可以按照自定义的要求随心所欲的运行程序
- 可让被调试的程序在所指定的调置的断点处停住(断点可以是条件表达式)
- 当程序被停住时,可以检查此时程序中所发生的事
- 可以改变程序,将一个 BUG 产生的影响修正从而测试其他 BUG