(转)gcc学习笔记
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学习笔记的更多相关文章
- Centos7升级gcc学习笔记
概述 最近在学习<深入应用C++11-代码与优化与工程级应用>,我的gcc版本是gcc-4.8.5是支持C++11的,但是我在作者的github上看了一些C++例子,其中有些是C++14的 ...
- Centos7升级gcc学习笔记 gcc 4.8.5 -> gcc 5.4.0
摘自:https://www.cnblogs.com/highway-9/p/5628852.html 一.安装开发必备环境: yum groupinstall "Development T ...
- gcc学习笔记
1:第一个程序 : hello world #include <stdio.h> int main(void) { printf("Hello , world ! \n" ...
- 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程
一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...
- gcc 学习笔记(一) - 编译C程序 及 编译过程
一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...
- GCC/G++ 学习笔记
本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细查看本书,请戳这里. 一 ...
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
随机推荐
- ecplise建立模拟器,安装apk文件
方法一,把所要安装的apk,例xxx.apk拷贝到sdk下的adb的路径下,也就是和adb在同一个文件夹,比如我的是D:\Program Files\Android\sdk\platform-tool ...
- 大数据学习——Hbase
1. Hbase基础 1.1 hbase数据库介绍 1.简介 hbase是bigtable的开源java版本.是建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写nosql的数据库系统 ...
- Python第三方库之openpyxl(10)
Python第三方库之openpyxl(10) 雷达图 在工作表上的列或行中排列的数据可以在雷达图中绘制.雷达图比较多个数据系列的总值.它实际上是一个圆形x轴上的面积图的投影.有两种类型的雷达图:st ...
- [uiautomator篇]uiwatcher 的使用场景
http://www.yangyanxing.com/article/use-watcher-in-uiautomator.html 今天在uiautomator中实践了watcher的用法,这个 ...
- 鼠标移动或者鼠标点击div消失不见排查
点击事件,导致某div或者容器样式隐藏,如果不能直接发现click事件绑定,那么首先排查哪些方法在控制div的样式, 然后看一看哪些方法在调用修改样式的方法. 然后再排查什么在调用修改样式的方法的方法 ...
- n&(n-1)的用途
最近做LeetCode上面的题目,发现很多题目都用到了n&(n-1).感觉真是神通广大,下面就目前所看到的一些用途总结一下: 1,求一个int类型数是否为2的幂 当n=4时,二进制为:0100 ...
- nodemailer发送邮件遇到的一些问题
使用nodemailer发送邮件一直困惑了我好几天,百度谷歌都没有找到的几个问题,方便大家排查. 我使用的是0.7.1版本,其他的版本好像报错,就没用. 错误信息:Mail from command ...
- 【Luogu】P2953牛的数字游戏(博弈论)
题目链接 自己乱搞……然后一遍AC啦! 思路从基本的必胜态和必败态开始分析.我们把减去最大数得到的数叫作Max,减去最小数得到的数叫作Min. 那么开始分析. 一.0是必败态. 这个没法解释.题目就这 ...
- 常州模拟赛d3t2 灰狼呼唤着同胞
题目背景 我的母亲柯蒂丽亚,是一个舞者.身披罗纱,一身异国装扮的她,来自灰狼的村子. 曾经在灰狼村子担任女侍的她,被认定在某晚犯下可怕的罪行之后,被赶出了村子. 一切的元凶,都要回到母亲犯下重罪的那一 ...
- Spring-IOC源码解读1-整体设计
1. SpringIOC提供了一个基本的javabean容器,通过IOC模式管理依赖关系,并通过依赖注入和AOP增强了为javabean这样的pojo对象赋予事务管理,生命周期管理等基本功能.2. S ...