• 11、GCC的基本使用


    一. 常用编译命令选项   

    假设源程序文件名为test.c

    1. 无选项编译链接

    用法:#gcc test.c

    作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out

    2. 选项 -o

    用法:#gcc test.c -o test

    作用:将test.c预处理、汇编、编译并链接形成可执行文件test-o选项用来指定输出文件的文件名。

    3. 选项 -E

    用法:#gcc -E test.c -o test.i

    作用:将test.c预处理输出test.i文件。

    4. 选项 -S

    用法:#gcc -S test.i

    作用:将预处理输出文件test.i汇编成test.s文件。

    5. 选项 -c

    用法:#gcc -c test.s

    作用:将汇编输出文件test.s编译输出test.o文件。

    6. 无选项链接

    用法:#gcc test.o -o test

    作用:将编译输出文件test.o链接成最终可执行文件test

    7. 选项-O

    用法:#gcc -O1 test.c -o test

    作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

    二. 多源文件的编译方法

    如果有多个源文件,基本上有两种编译方法:

    [假设有两个源文件为test.ctestfun.c]

    1. 多个文件一起编译

    用法:#gcc testfun.c test.c -o test

    作用:将testfun.ctest.c分别编译后链接成test可执行文件。

    2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

    用法:

    #gcc -c testfun.c //testfun.c编译成testfun.o

    #gcc -c test.c //test.c编译成test.o

    #gcc testfun.o test.o -o test //testfun.otest.o链接成test

        以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

    三、gcc编程环境基础--编译时头文件和库文件路径指定

    预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking)

    ※includeheader文件,连结数据库,系统定义,总共有下列来源指定gcc去那找

    当初在编译时指定的(~gcc/gcc/collect2.c:locatelib()

    写在specs内的

    后来用-D -I -L指定的

    gcc环境变量设定(编译的时候)

    ld.so的环境变量(这是run time的时候)

    1.头文件

    gcc在编译时怎么去寻找所需要的头文件 :

    ※header file的搜寻会从-I开始

    然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH

    再找内定目录

    /usr/include

    /usr/local/include

    /usr/lib/gcc-lib/i386-linux/2.95.2/include

    /usr/lib/gcc-lib/i386-linux/2.95.2/include/g++-3

    /usr/lib/gcc-lib/i386-linux/2.95.2/i386-linux/include

    2.库文件

    cos()等函式库的选项要多加 -lm

    编译的时候:

    ※gcc会去找-L

    再找gcc的环境变量LIBRARY_PATH

    再找内定目录 /lib /usr/lib /usr/local/lib

    3.利用Linux系统上已有的研发库

    (1).查看库文件提供了哪些调用

    能用nm命令自己查看库文件提供了哪些调用

    (2).通过头文件查看函数的定义

    Wc -l 查看文件的内容

        Gcc 预编译技术首先将头文件解析成临时文件,在某个源代码文件需要时,读入临时文件。可以用g++单独编译一个头文件

        编译阶段主要进行源代码的完整性检测,然后将代码翻译成汇编语言,而汇编阶段主要进行汇编代码向目标代码的翻译。

    4.函数库分为:

    静态库:后辍一般为.a

    动态库:共享库,.so(share object),一般格式为*.so.x,x为版本。

  • 相关阅读:
    NIO编程介绍
    伪异步IO
    BIO模型
    Json
    Jquery笔记
    JQuery与Ajax
    jQuery之事件和动画
    JQueryDOM节点操作
    认识Jquery
    javascript之DOM
  • 原文地址:https://www.cnblogs.com/mydomain/p/2138034.html
Copyright © 2020-2023  润新知