【C语言】程序编译链接详解

本文详细阐述了C语言程序从源代码到可执行程序的编译和链接过程,涉及预处理、编译、汇编等阶段,并介绍了程序的执行环境,包括内存加载、main函数调用和运行时栈的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、程序的翻译环境和执行环境

二、编译链接过程

2.1、程序编译过程

2.2、程序编译链接的阶段

2.2.1、预处理

2.2.2、编译

2.2.3、汇编

2.2.4、链接

2.2.5、整体过程

三、运行环境


一、程序的翻译环境和执行环境

在ANSI C的任何一种实现中,存在两个不同的环境

第一种是翻译环境(由编译器完成),在这个环境中源代码转换为可执行的机器指令。

第二种是执行环境,它用于执行代码

二、编译链接过程

2.1、程序编译过程

一个源文件要经过编译,链接才能形成可执行程序。因此每个源文件经过编译器处理生成目标文件,多个生成的目标文件和链接库经过连接器处理生成可执行程序。

在vs2019下编译器是cl.exe,链接器是link.exe

连接器同时也会引入标准C函数库中任何被该程序所用到的函数

2.2、程序编译链接的阶段

2.2.1、预处理

1、进行头文件的包含,将头文件的相关内容包含进test.i文件中。(#include预处理指令)

在Linux环境下,头文件放在/usr/include目录下。

2、define定义符号的替换(#define预处理指令)

3、去注释

[hx@VM-24-7-centos 20240120-编译链接]$ vim test.c
                                                                                             
    1 #include<stdio.h>
    2 
    3 extern int Add(int,int);
    4 
    5 //定义MAX的值
    6 #define MAX 1000
    7 
    8 int main()
    9 {
   10     int x=MAX;                                                                                                     
   11     int a=10;
   12     int b=20;
   13     int c=Add(a,b);
   14     printf("%d\n",c);
   15 
   16     return 0;
   17 }
[hx@VM-24-7-centos 20240120-编译链接]$ gcc add.c -E -o add.i
[hx@VM-24-7-centos 20240120-编译链接]$ gcc test.c -E -o test.i
[hx@VM-24-7-centos 20240120-编译链接]$ ls
add.c  add.i  test.c  test.i

###  -E选项,让预编译后停下来
###  -o选项  编译结束后把结果放到test.i文件中
### LAMP 架构 WordPress 部署教程 #### 准备工作 确保服务器环境已准备好,包括操作系统的选择以及必要的更新操作。 #### 安装 Apache Web Server 通过命令行安装Apache服务,对于基于Red Hat的Linux发行版可以使用如下命令: ```bash yum update -y yum install httpd -y ``` 启动并设置Apache开机自启: ```bash systemctl start httpd.service systemctl enable httpd.service ``` #### MySQL 数据库配置 创建用于WordPress的数据存储空间。执行SQL语句来建立新的数据库及其用户账号,并赋予相应权限[^2]: ```sql CREATE DATABASE wordpress; GRANT ALL ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; EXIT; ``` #### PHP 及其模块安装 为了使WordPress正常运行,还需要安装PHP及相关扩展组件。可以通过下面这条命令完成安装过程[^4]: ```bash yum -y install php php-cli php-fpm php-gd php-curl php-zip php-mbstring php-opcache php-intl php-mysqlnd ``` 重启HTTPD让更改生效: ```bash systemctl restart httpd.service ``` #### 获取与上传WordPress 文件 下载官方发布的最新版本压缩包至服务器本地,解压并将其中的内容复制到Web根目录内: ```bash cd /tmp/ wget https://cn.wordpress.org/latest-zh_CN.zip unzip latest-zh_CN.zip mv wordpress/* /var/www/html/ chown -R apache:apache /var/www/html/* chmod -R 755 /var/www/html/ ``` #### 修改站点默认文档位置 (可选) 如果希望保持URL简洁而不显示`/wordpress`部分,则需调整虚拟主机配置文件中的DocumentRoot指向实际存放WP程序的位置;另外还需注意DirectoryIndex指令是否正确设置了index.php作为首页加载项[^3]。 #### 访问网站进行初始化向导 打开浏览器输入域名或IP地址访问新搭建好的Wordpress实例,按照页面指示填写必要信息即可完成最终设定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值