1、gcc -Wall hello.c -o hello //编译源文件,显示警告信息

2、./a.out   //运行程序

3、gcc -Wall calc.c /usr/lib/libm.a -o calc //绝对路径包含库

4、gcc -Wall calc.c -lm -o calc //使用参数包含库

5、Gcc默认搜索库文件的目录:/usr/local/lib/  ; /usr/lib/

6、Gcc默认搜索头文件的目录:/usr/local/include/ ;  /usr/include/

7、Gcc -I与-L参数:前者将路径加到搜索包含头文件的搜索路径列表;后者

将路径加到搜索包含库文件的搜索路径列表。

8、 C_INCLUDE_PATH 添加c语言头文件的搜索路径的变量

9、 CPP_INCLUDE_PATH 添加c++语言头文件的搜索路径的变量

10、LIBRARY_PATH 添加库文件的搜索路径的变量

11、LD_LIBRARY_PATH 添加动态共享库的搜索路径的变量

12、添加变量后要使用命令 “export 变量名”导出变量

13、Gcc的-D选项可以在命令行中添加宏定义

14、Gcc -E test.c 预处理源文件,结果在标准输出上显示,不保存到文件

15、Gcc -c -save-temps hello.c 将生成目标文件过程中所用到的所有临时文件保存

16、-g选项使得gcc带调试信息编译,可以用在gdb的调试中

17、优化级别:源代码级的优化(公共子表达式消除和函数内嵌)、速度-空间折中的优化(循 环展开)和指令级的优化(指令重调度)

18、“-O0”默认级别,没有任何优化,以程序的自然方式编译,适用于调试;

“-O1或-O”,只有源代码级的优化,程序速度和大小都有优化;

“-O2”,在不增加可执行文件大小前提下进一步优化,采用了指令级别优化,但没有 折中优化,适用于软件发行包;

“-O3”适用了折中优化的进一步优化,文件可能会增大,但有时优化反倒使程序变慢。

“-funroll-loops”打开循环展开

“-Os”缩减可执行文件大小的优化

调试时用“-O0”,开发部署时用“-O2”就足够了

19、time ./a.out 测试程序的运行时间

20、编译c/c++程序都可以适用gcc,链接c++程序要使用g++;链接c++程序也可以适用gcc, 方法如下:gcc -Wall [-static//静态链接库文件选项] hello.cpp -lstdc++

21、ar库文件打包工具:

ar cr libhello.a hello_fn.o bye_fn.o // cr "create and replace"

如果libhello.o不存在,就创建它,存在就更新它

ar 的命令选项不需要在选项前加“-”

ar t libhello.a 列出库文件含有的目标文件

ar d libhello.a test.o 删除libhello.a中的库文件test.o

当前目录为test,其中有一个源文件main.c和一个文件夹mylib;mylib中有两个文件夹,

Include和一个lib,include中有hello.h和bye.h,lib中有libmyfun.a库打包文件。以下 命令是利用这些文件的方法。

gcc -Wall main.c -o test -I mylib/include -L mylib/lib -lmyfun

22、gprof工具的使用:

Gcc -Wall -c -pg test.c

Gcc -Wall -pg test.o

./a.out

Gprof a.out

编译和链接过程中都要使用-pg选项

要先运行一次程序才能运行gprof

23、gcov工具使用:

Gcc -Wall -fprofile-arcs -ftest-coverage test.c

./a.out

Gcov test.c //使用的是源文件

覆盖测试必需加以上两个选项

编译后必需运行一下程序才能使用gcov程序。

24、file命令查看文件属性

25、Nm查看二进制文件符号表

26、Ldd查看可执行文件依赖的共享库

27、预处理:cpp

28、编译: gcc

29、汇编: as

30、链接: ld

31、Gcc选项 -E(预处理)-S(汇编)

(转)gcc学习笔记的更多相关文章

  1. Centos7升级gcc学习笔记

    概述 最近在学习<深入应用C++11-代码与优化与工程级应用>,我的gcc版本是gcc-4.8.5是支持C++11的,但是我在作者的github上看了一些C++例子,其中有些是C++14的 ...

  2. Centos7升级gcc学习笔记 gcc 4.8.5 -> gcc 5.4.0

    摘自:https://www.cnblogs.com/highway-9/p/5628852.html 一.安装开发必备环境: yum groupinstall "Development T ...

  3. gcc学习笔记

    1:第一个程序 : hello world #include <stdio.h> int main(void) { printf("Hello , world ! \n" ...

  4. 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程

    一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...

  5. gcc 学习笔记(一) - 编译C程序 及 编译过程

    一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...

  6. GCC/G++ 学习笔记

    本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细查看本书,请戳这里. 一 ...

  7. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  8. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...

  9. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

随机推荐

  1. vm下-kali-linux-xfce-2018.1的简略安装

    1.选择版本为 debian 系统,因为是kali是基于debian的linux发行版 2.在安装首页选择 Graphical install,图形化安装,之后会让选择语言,选择简体中文,中国等,这些 ...

  2. 五、人生苦短,我用python【第五篇】

    Python基本数据类型 运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为 ...

  3. x86保护模式-七中断和异常

    x86保护模式-七中断和异常 386相比较之前的cpu   增强了中断处理能力   并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断     ...

  4. BZOJ 3518 点组计数 ——莫比乌斯反演

    要求$ans=\sum_{i=1}^n \sum_{j=1}^m (n-i)(m-j)(gcd(i,j)-1)$ 可以看做枚举矩阵的大小,然后左下右上必须取的方案数. 这是斜率单增的情况 然后大力反演 ...

  5. [BZOJ3378] [Usaco2004 Open]MooFest 狂欢节(树状数组)

    传送门 开2个树状数组 一个存的是下标,一个存的是数量 细节...看标称吧,懒得说了,好气啊 #include <cstdio> #include <iostream> #in ...

  6. P1133 教主的花园 (动态规划)

    题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢 3种树,这3种 ...

  7. java面试题之sleep()和wait()方法的区别

    sleep方法: 属于Thread类中的方法:会导致程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持着,当指定时间到了之后,又会自动恢复运行状态:在调用sleep方法的过程中,线 ...

  8. bzoj 4401 块的计数 思想+模拟+贪心

    块的计数 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 455  Solved: 261[Submit][Status][Discuss] Descr ...

  9. CMDB资产管理系统的数据表设计

    Server表: asset = models.OneToOneField('Asset') 主机名(hostname) sn号(sn) 制造商(manufacture) 系统(os_platform ...

  10. T9270 mjt树

    题目背景 从前森林里有一棵很大的mjt树,树上有很多小动物. 题目描述 mjt树上有 n 个房间,第 i 个房间住着 ai 只第bi 种小动物. 这n个房间用n-1条路连接起来,其中房间1位mjt树的 ...