gcc,g++ 学习笔记

我的工作,就是一个大杂烩,什么都得学点。最近在不同的linux 平台下编译C,顺便抽个空深入学习一下gcc。

什么是gcc:来自维基百科。关键字:跨平台,编译器,多种语言支持。GNU系統的官方編譯器(包括GNU/Linux家族)

GCCGNU Compiler CollectionGNU编译器套裝),是一套由GNU开发的编程語言编译器。它是一套以GPLLGPL許可證所發行的自由軟體,也是GNU計畫的关键部分,亦是自由的类Unix及蘋果電腦Mac OS X 操作系統的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。

GCC原名為GNU C語言編譯器GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之後也變得可處理FortranPascalObjective-CJavaAda,以及Go與其他語言。


补充个GPL和LGPLlicense的知识点:


遇到的命令:

-Idirdir加入到搜索头文件的路径列表中。
如 CC_INCLUDES = -I./src

-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out。-o $(INTERP)/commons_net.o src/commons_net.c

-O 
-O1
尝试优化编译时间和可执行文件大小。

-s去除可执行文件中的符号表和重定位信息。用于减小可执行文件的大小

-fPIC参数:PIC就是position independent code
PIC使.so文件的代码段变为真正意义上的共享如果不加-fPIC,则加载.so文件的代码段时,代码段引用的数据对象需要重定位,重定位会修改代码段的内容,这就造成每个使用这个.so文件代码段的进程在内核里都会生成这个.so文件代码段的copy.每个copy都不一样,取决于这个.so文件代码段和数据段内存映射的位置.


-shared 参数使其生成是动态库而不是普通执行程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惹不起的程咬金

来都来了,不赏点银子么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值