zoukankan      html  css  js  c++  java
  • (转)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和一个文件夹mylibmylib中有两个文件夹,

    Include和一个libinclude中有hello.hbye.hlib中有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(汇编)

  • 相关阅读:
    jmap使用
    Spring boot后台搭建一使用MyBatis集成Mapper和PageHelper
    aspose.slides for java去除水印
    win10 解决Failed installing 'Tomcat8' service
    NoSQL数据库
    windows下Java调用可执行文件
    Neo4j CQL基本使用
    初识Neo4j
    (原)下载pubFig的python代码
    (原+译)win7远程连接ubuntu16.04
  • 原文地址:https://www.cnblogs.com/woainilsr/p/3203244.html
Copyright © 2011-2022 走看看