环境配置
- 工具里面的选项 里面的 环境 里面
改变随机地址 变成否
随机地址 改为 否
链接生成
计算机分层架构
CPU
内存
硬盘
- 一个程序最初以exe 文件的形式,在硬盘中
- 双击exe,操作系统将其移到内存中运行
- CPU读取内存的exe的副本,并运行此程序
手工编译生成exe文件
文本txt 中编译文本中写入语言
使用控制台,手工编译,连接得到exe文件
在cmd窗口
c:\mytmp>cl /c my.c
用于 x86 的 Microsoft (R) C/C++ 优化编译器 18.00.30501 版版权所有(C) Microsoft Corporation。 保留所有权利。
my.c
c:\mytmp>link my.obj
Microsoft (R) Incremental Linker Version 12.00.30501.0
Copyright (C) Microsoft Corporation. All rights reserved.
c:\mytmp>my.exe
hello world!
编译链接做了什么
cl.exe link.exe.就是编译器,链接器,他们的作用分别是:
编译器:输入为源码(.c)文件 → 输出为.obj文件,机器文件 (编译器 当作 翻译机器)
连接器:输入为obj → 输出为 可执行文件(.exe)文件 (他的工作主要是将程序员的obj文件,与库的obj文件,进行连接,得到exe)
(为什么要连接器)问题 printf是如何 把东西打印到屏幕上
就是把程序员文件 与C11库里面的obj文件 进行连接得到exe.
编译和链接分两步意义所在:模块化
如果直接输入
cl xx.c 不加入/c
会同时出现 exe obj 破坏模块化