跟美国博士学编程
pan.baidu.com
必备的软件:
Virtual Box https://mirrors.tuna.tsinghua.edu.cn/help/virtualbox/
MobaXTerm (Win), Terminal (Mac/Linux)
我们的VM 虚拟机里有啥:
操作系统:Debian 10 (.ova debian 导入虚拟机的目录: E:\VirtualBox )
编译器: GCC ,Glibc , GDB, 苹果公司: Clang, LLDB
编译器: Emacs: Helm, TabNine 等插件
其它: Git, Fish Shell, 等。
备注: debian安装emacs23
$ sudo apt-get install emacs
第一课:
include
using namespace std;
int main()
{
cout << "Hello World";
return 0;
}
c++ : 标识符内部不允许: @ & % 保留字;
man Man 是两个不同的标识符;
预处理: 头文件, 宏的展开; 生成文件 .i
编译: 词法分析, 优化, 代码生成。(汇编代码 .asm) .obj 二进制文件;
链接: 和别的库链接 和 obj文件;
执行可执行文件:
https://pan.baidu.com/play/video#/video?path=%2F计算机%2F078 跟美国博士学编程:C%2B%2B特训班%2F第2讲 C%2B%2B基础语法和编译%2F2.2 C%2B%2B的计算机基础架构 【www.zxit8.com】.mp4&t=-1
编译从汇编到二进制 Asm--Bin
计算机体系结构: 冯诺依曼架构 = 普林斯顿架构
程序指令和数据存储合并在一起。
三个基本原则:
二进制逻辑 , 程序存储执行, 计算机由五个部分组成;
存储器,运算器,控制器; IPO
好的工具是成功的基础:
预处理(Preprocessing): cpp test.cpp > test.i
编译(Compilation): g++ -g -S test.i
汇编(Assembly)
as -o test.o test.s
gcc -g -c test.c; objdump -d -M intel -S test.o
链接 (Linker): Id -o myTest test.o ... [其他链接选项]
备注: g++ 编译器 test.cpp 意思为输入文件 -o myTest 为输出。 ./myTest 执行文件
g++ test.cpp -o myTest
./myTest
下面为分解处理:
生成预处理文件 :查看预处理后的文件内容
cpp test.cpp > test.i
编译:生成汇编文件 -g 表示把调试的信息加进去。 -S 表示要编译成一个汇编 输入是 test.i 文件。 注意 -S S是大写。 写错不会生成 .s 的文件
g++ -g -S test.i
汇编 Assembly 生成obj 文件 二进制文件 编辑器打开是乱码,用第一个代码。
as -o test.o test.s
下面第二个命令是增加 asm 文件的注释。
gcc -g -c test.c; objdump -d -M intel -s test.o
生成链接文件。
Id -o myTest test.o 其他链接选项
C++ 核心资料:
C++参考手册
C++ 非常有用的工具
C++库的源码

浙公网安备 33010602011771号