Linux编译器-gcc/g++使用

程序翻译的过程

在这里插入图片描述
gcc只能用来编译c,g++可以编译c也可以编译c++
下载g++编译器 sudo yum install -y gcc-c++

在这里插入图片描述
gcc file.c -o file 即可完成编译 记得-o后面跟着编译形成的可执行程序名即可

-E选项:从现在开始进行程序的翻译,如果预处理完成,就停下来!

gcc -E file1.c : 将预编译完成后的内容打印到屏幕上 后面+ -o file.i 则是将预编译后的内容存到文件i里面
在这里插入图片描述

-S:从现在开始进行程序的翻译,如果编译完成,就停下来

用法同-E,可以从预编译后的文件直接开始翻译形成.s文件

-c:从现在开始进行程序的翻译,如果汇编完成,就停下来

gcc -c file1.i -o file1.o ** 形成的file1.o为可重定向目标文件**但这个文件不可被执行,还差链接过程
eg : gcc file1.o -o file1

动静态库 —— 感性的理解

在这里插入图片描述
ldd :查看可执行程序依赖的库
file:可查看链接方式
windows:静态库 .lib 动态库 .dll
linux:静态库 .a 动态库 .so

一般链接有两种方式:

动态链接——需要动态库
静态链接——需要静态库
C头文件在/usr/include 目录下(头文件提供C语言的方法声明)
C库文件在/lib64 目录下(库文件提供C语言的方法实现)
头文件+库文件 链接上我的源文件 ——》exe可执行文件

动态链接

将库中我要的方法的地址,填入我的可执行程序中,建立关联 (节省资源,依赖库)

静态链接

将库中方法的实现,直接拷贝到我们的可执行程序中 (占用资源,不依赖库)

gcc、g++默认使用动态链接

静态链接指令:gcc test.c -o test -static

动态链接必须使用.so动态库文件
静态库必须使用.a静态库文件

你的机器可能因为没有静态库,而导致链接失败

sudo yum install -y glibc-static #下载C静态库
sudo yum install -y libstdc+±static #下载C++静态库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值