Post

C Roadmap

C编译原理

预处理(Preprocessing) -> 编译(Compilation) -> 汇编(Assemble) -> 链接(Linking)

source code(.c/.h) -> 预处理 -> (.i/.ii) -> 编译 -> assembly code(.s) -> 汇编 -> machine code(.o/.obj) -> 链接 -> executable machine code(.out/.exe)

Preprocessing command: gcc -E test.c -o test.i -E 预处理后退出,-o 输出文件名

Compilation command: gcc -S test.i -o test.s -S 编译后停止

Assemble command: gcc -c test.s -o test.o

Linking command: gcc test.o -o test

参考:https://zhuanlan.zhihu.com/p/111500914

GCC&LLVM

编译器的目的是将便于人写的高级编程语言作为源代码,翻译成计算机能够执行的低级机器语言,即可执行文件。其中高级语言有C、C++、Java、Python等,低级语言有汇编语言和机器代码。一个编译器可以按照三段式分为:前段(Fontend)、优化器(Optimizer)、后端(Backend)

GCC(GNU Compiler Collection)是GNU(Gnu’s Not Unix自由操作系统)开发的编程语言编译器,以GPL及LGPL许可证所发行的自由软件。原本只能处理C,发展后可以处理C++,fortran、Pascal、Objective-C、Java等

LLVM(Low Level Virtual Machine),即底层虚拟机。它是一个由C++编写而成的编译器基础框架,利用虚拟技术创造出编译时期、链接时期、运行时期以及“闲置时期”的最优化框架。从宏观上来讲,LLVM不仅仅是一个编译器或者虚拟机,它是一个众多编译器工具及低级工具技术的统称,它包含了一个前端、优化器、后端以及众多的函数库和模板。微观上来讲,可以把它看做后端编译器,用来生成目标代码,前端编译器为Clang。Xcode5版本之前,编译器默认使用的是GCC,从Xcode5之后编译器默认使用LLVM(前端clang/后端llvm)。CLang是一个由C++编写的前端编译器,能够编译C/C++/Objective等高级语言,属于LLVM的一部分,发布于BSD(自由软件中使用最广发的许可证之一)许可证下,其目的是超越GCC。

GCC支持许多语言扩展,其中有些Clang不能实现

objective-c 由苹果开发的,用gcc和clang(llvm作为后端)编译,objective-c与Swift是OS X和iOS操作系统、及与其相关的API、Cocoa和Cocoa Touch的主要编程语言

API: 提供给应用程序直接调用功能(无须理解底层源码)的接口,通过api能将新的应用组件集成到现有基础架构中

C++运行方式

1.Replit

2.mybinder (https://mybinder.org/v2/gh/jupyter-xeus/xeus-cling/HEAD) 根据环境文件在远程配置好docker容器后再运行

3.终端jupyter lab/jupyter notebook新建textfile编写cpp,调用终端执行,还可查看PDF(notebook在Safari上看不了换Chrome)

4.vs code + docker(有container configuration file)

5.IDE: clion, xcode

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.