您的位置:首页 > 其它

gcc,g++ 学习笔记

2013-10-29 14:33 85 查看
我的工作,就是一个大杂烩,什么都得学点。最近在不同的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的知识点:



遇到的命令:

-Idir把dir加入到搜索头文件的路径列表中。

如 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 参数使其生成是动态库而不是普通执行程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: