C语言不同操作系统不同编译器,msvc mingw gcc cmake VS的理解

编译器的编译有三步

1 C源代码生成汇编码

2 汇编语言生成中间代码.obj类型,一个源文件一个.obj
每个源文件通常编译成一个对应的目标文件(.obj或.o)。但在某些情况下,多个源文件可以编译成一个目标文件

3.由obj文件得到最终的目标(可执行文件或库),过程稍复杂

二进制机器码要先访问操作系统,再由操作系统访问CPU和内存等硬件。不同的操作系统有相应的二进制机器码的规范,所以不同的操作系统要用不同的编译器

在 GNU/Linux中常使用的是gcc和g++编译器
在WINDOWS平台中常使用的是msvc编译器,还有mingw
当然还有其他的编译器,比如Clang,IIC等

make cmake MSVC VS 等项目配置工具

某些情况有多个项目,项目直接有依赖关系。make 工具通常用于批量编译和构建项目,它会根据项目的依赖关系和规则调用编译器来先后生成目标文件(.obj或.o文件),然后将这些目标文件链接在一起以生成最终的可执行文件(通常是.exe或无扩展名的文件)。
make 是一个命令行工具,用于执行构建任务,可以在不同的操作系统上使用,包括Linux、Unix、macOS和Windows(通过MinGW等)。Makefile 是一个文本文件,包含构建项目所需的规则和指令,它是 make 工具的输入。Makefile 的语法是独立于编译器的,因此可以在不同编译器下使用。

makefile 文件冗长繁琐, 所以有了cmake ,其cmakelist.txt配置文件写法简便,用来生成makefile。因此cmake并不是直接来配置项目的,最终还是通过makefile来管理配置项目。另外cmake 不仅支持生成makefile还能生成VS的项目配置,还能生成其他类型的项目配置。

对于不熟悉命令行的人来说,make工具比较难用。win中的经典IDE(Integrated Development Environment) :visual studio 提供的MSVC编译器使用其特有的项目文件格式VCProject。 Visual Studio(通常称为VS)进行Windows平台的软件开发时,有两个重要的概VCProject和Solution(SLN)。VCProject它代表了一个独立的C++项目。每个VCProject都可以独立地构建,并且可以在一个Solution中包含多个VCProjects。文件的扩展名通常是.vcproj或.vcxproj。Solution(SLN):Solution是一个用于组织和管理多个VCProjects的容器。它可以包含一个或多个VCProjects,以及共享的全局设置和配置。Solution文件的扩展名通常是.sln,它包含了Solution的结构、每个项目的依赖关系和构建配置信息等。

交叉编译(Cross-Compilation)

是一种编译过程,使用一个编译器(称为交叉编译器)在一个操作系统或架构上为另一个不同的目标操作系统或架构生成可执行文件或库文件。比如有个嵌入式的arm平台,算力较弱。可以放在win的主机上用arm的编译器来编译。编译好的可执行文件拷贝到嵌入式中。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值