1.2+1.3 GCC

news/2024/7/7 20:00:57

在这里插入图片描述

安装gcc g++

sudo apt install gcc g++

查看gcc版本

gcc -v
gcc -version
g++ -v
g++ -version

xshell快捷键:ctrl+L清空命令行

编译测试

/home/ssp/Linux/lession02目录下创建一个test.c文件

touch test.c

使用vs code远程连接到Ubuntu,写c代码更方便

#include <stdio.h>

int main(){
    printf("Hello World");
    return 0;
}

编译命令:

gcc test.c -o app

运行程序,直接在当前目录下./app
如果不加-o会生成一个默认的a.out
运行./a.out也可以成功执行代码

编程语言的发展

在这里插入图片描述

GCC工作流程

在这里插入图片描述

1)、预处理

引入头文件代码,删掉注释,宏替换

gcc test.c -E -o test.i

2)、【编译器】编译成汇编代码

gcc test.c -S -o test.s

如图为编译后的汇编代码
在这里插入图片描述

3)、【汇编器】汇编

汇编成目标代码

gcc test.s -c -o test.o

4)、【链接器】链接

生成可执行程序.out/.exe

./test.o

在这里插入图片描述

【纠错】输入的参数 -s 是错误的(没有 -s 参数,只有 -S 参数,手误),应该是 -c 参数。-c 生成目标代码 test.o,test.o 不是一个可执行程序。如果下一步需要继续链接成可执行程序,需要输入指令 gcc test.o -o test.out(这里直接将 .o 目标文件链接成可执行程序 test.out,可以有多个 .o 文件,这里只有一个)

自动执行预处理+汇编+链接

gcc test.c

04. gcc g++

gcc编译C程序,g++编译C++程序(也可以编译C程序

在这里插入图片描述

05 gcc参数选项

在这里插入图片描述
在这里插入图片描述

xftp的使用:上传到文件服务器
在这里插入图片描述
在这里插入图片描述

-D指定一个宏

意义:方便调试,发布的时候不需要输出宏的地方

gcc test.c -o test -DDEBUG # -D和DEBUG可以不分开

test.cpp

#include <stdio.h>
#define DEBUG
//-D相当于在程序里定义了一个宏
int main()
{
    int a = 10;
#ifdef DEBUG
    printf("我是一个程序猿, 我不会爬树...\n");
#endif
    for(int i=0; i<3; ++i)
    {
        printf("hello, GCC!!!\n");
    }

    int b, c, d, f;
    b = 10;
    c = b;
    d = c;
    f = d;
	//程序优化,防止反汇编,看不出程序原来的逻辑,还有性能内存方面的优化
    /*
        int b,c,d,f;
        b = 10;
        c = 10;
        d = 10;
        f = 10;
    */


    return 0;
}

-Wall 输出警告信息

gcc test.c -o test -Wall

-std

c89:变量都要放在前面
c99:可以放在后面


http://lihuaxi.xjx100.cn/news/965885.html

相关文章

GrabCut算法、物体显著性检测

图割GraphCus算法。利用颜色、纹理等信息对GraphCut进行改进&#xff0c;形成效果更好的GrabCut算法。 对图像的目标物体和背景建立一个K维的全协方差高斯混合模型。 其中&#xff0c;单高斯模型的概率密度函数用公式表示为&#xff1a; 高斯混合模型可表示为n个单高斯模型的概…

【SpringBoot高级篇】SpringBoot集成jasypt 配置脱敏和数据脱敏

【SpringBoot高级篇】SpringBoot集成jasypt数据脱敏配置脱敏使用场景配置脱敏实践数据脱敏pomymlEncryptMethodEncryptFieldEncryptConstantEncryptHandlerPersonJasyptApplication配置脱敏 使用场景 数据库密码直接明文写在application.yml配置中&#xff0c;对安全来说&…

HTTP的强缓存与协商缓存

强缓存策略 直接从本地副本比对读取&#xff0c;不去请求服务器&#xff0c;返回的状态码是 200。 cache-control HTTP1.1 新增了 cache-control 字段&#xff0c;当 cache-control 和 expires 都存在时&#xff0c;cache-control 优先级更高。该字段是一个时间长度&#xf…

完美解决Column ‘xxx‘ in field list is ambiguous问题

复现问题 使用如下SQL查询数据&#xff1a; SELECTid as id,user.login_name AS user_mobile,apply_status,( SELECT value FROM data_dict WHERE CODE apply_status ) AS apply_status_value,apply_no,application_name,belong_org_code,belong_org_data_dict.value AS bel…

交叉编译和 RPC

本篇文章译自英文文档 Cross Compilation and RPC 作者是 Ziheng Jiang&#xff0c;Lianmin Zheng。更多 TVM 中文文档可访问 →TVM 中文站 本教程介绍了如何在 TVM 中使用 RPC 进行交叉编译和远程设备执行。 利用交叉编译和 RPC&#xff0c;可以实现程序在本地机器编译&…

scikit-image:遥感图像geotiff格式转mat格式

scikit-imagescikit-image 是一个专门用于图像处理的 Python 库&#xff0c;它可以与 Scipy 库和其他可能有助于计算的 Python 库一起使用。Github地址&#xff1a;https://github.com/scikit-image/scikit-image Star有5.3k首先pip安装scikit-image包&#xff0c;或者直接使用…

中文代码86

PK 嘚釦 docProps/PK 嘚釦諿A眎 { docProps/app.xml漅薾?糤?D?v拢W4揣狤"攃e9 睔貣m*:PAz韒g?项弇}R珁湧4嶱 ]I禑菦?櫮戵\U佳 珩 ]铒e礎??X(7弅锿?jl筀儸偛佣??z窊梈ZT炰攷 ?\ 銒沆?状尧绥>蕮 ?斬殕{do]?o乗YX?:??罢秗,泿)怟 …

基于JSP的网上书城

技术&#xff1a;Java、JSP等摘要&#xff1a;随着科技的迅速发展&#xff0c;计算机技术已应用到社会的各个领域。随着计算机技术和通信技术的迅速发展&#xff0c;网络的规模也逐渐增大&#xff0c;网络的元素也随之不断增加&#xff0c;有的利用其通信&#xff0c;有的利用其…