c++编程基础(一)——一文带你了解c++源码到可执行文件的编译过程

本文介绍了C++源码如何通过预编译、编译、汇编和链接过程转化为可执行文件,探讨了动态库与静态库的区别和应用场景,以及DEBUG和RELEASE模式的差异。对于初学者,理解这些基础知识有助于解决编译和链接问题。

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

前言

  作为一个非科班出身的程序员,开始学习c++当然是从使用宇宙第一IDE——vs开始:创建个工程,写个HelloWorld.cpp,点击那个绿色的三角。OK,一个简单的程序就写好了,也不过如此嘛,这就是我最初的想法,当然那时埋下的隐患,也让我慢慢尝到了苦果,尤其是当你需要重新编译第三方库的时候,各种问题层出不穷(众所周知相比于其他主流语言java、python之流,c++加载第三方库到目前都没有一个完善的解决方案)。而想要搭建一个slam系统不可避免的要使用到很多第三方库(opencv,eigen,pcl,ceres,g2o等等),如果不搞懂编译相关的问题,总是会碰到各种莫名其妙的问题~

那么源代码究竟是怎么由一个文本文件变化到可执行文件的?动态库、静态库、DEBUG、RELEASE、LIB、DLL都是些啥?到底有些什么用?这篇文章既是作为我学习c++的一个阶段的总结,也希望能够帮助到其他的初学者快速的了解这些基础,从而避免掉进一些本来很easy的坑。以下所讲的都是固定的套路,一次学习,终生受益哈哈~

一、c++编译过程

首先我们来看一张图:

作为程序员,我们编写的是c.cpp文件,当然这个文件计算机是读不懂的,那怎么办呢?这里需要使用一个程序——编译器(多平台上的g++,vs自己用的cl)将.cpp文件转化为.o文件(目标文件win下为.obj)这样计算机就能读懂了。也就是说一个.cpp生成了一个.obj文件,那么最后生成的可执行文件.exe是怎么来的呢?通过链接器,将我们所有用到的.obj(包括第三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值