gcc编译器(代码的 预处理/汇编/编译/连接)

C程序员一般写程序会定义 .c和.h两种文件
.c文件(源文件)中一般放代码的实现,.h文件(头文件)中放 各种声明和定义。
  gcc -E __.c 只做预处理,可以生成.i文件
  gcc -c __.c 只编译不连接,生成.o文件
  gcc -S __.c 生成汇编,生成 .s文件
  gcc __.c 预处理、编译和连接
  gcc -o 指定目标文件名
  gcc -E __.c -oxx.i 生成.i文件
  gcc -Wall 可以显示更多的警告信息
C语言#include 查找头文件的途径:
  1 ""会查找 当前目录(<>不查找)
  2 gcc -I 指定的目录
  3 系统目录(/usr/include等)
  4 用环境变量
    (CPATH/C_INCLUDE_PATH)配置的目录
#pragma 可以额外新增一些功能,
#pragma GCC dependency 文件名
比较更新时间,如果 文件名比当前文件新,产生警告
#pragma GCC poison 名字
  这个名字将被禁用,否则 产生 错误
#pragma pack(正整数)
  可以设置 结构体的对齐和补齐的单位

程序员可以把自己的代码打包成库文件,再提供一个头文件即可。
  库文件包括静态库和共享库(动态库),静态库的使用方式 是代码的复制,共享库的使用方式 是函数指针(函数地址)。
  静态库优点是 代码独立,效率稍好,缺点是 代码的空间太大,不利于修改和维护。
  共享库优点是 代码空间较小,修改、维护比较方便,缺点是 代码依赖于共享库文件。
  共享库的使用更加广泛。共享库 以.so结尾,静态库 以 .a结尾。
  1 静态库的使用步骤
   1.1 生成 静态库文件(.a)
     a 写源代码
     b 编译生成目标文件(.o)
     c 使用ar -r 命令生成静态库文件
      ar -r lib__.a __.o
   1.2 调用静态库文件
    前提:需要lib__.a和__.h文件
     a 写调用源代码(test.c)
     b 编译 (gcc -c)
     c 连接静态库文件,有三种方法:
     1) gcc __.o lib__.a (直接连接)
     2) 配置环境变量 LIBRARY_PATH,把库文件所在路径配进去,然后用 gcc __.o -l__(库文件名)
     3) gcc __.o -l__ -L库文件路径
   2 共享库的使用步骤
    2.1 生成 共享库文件(.so)
     a 写源代码
     b 编译生成目标文件(.o)
      gcc -c -fpic __.c (-fpic可以不加)
     c 生成共享库文件
      gcc -shared __.o -o lib__.so
    2.2 调用 共享库文件
     和静态库一样    
    注:想运行共享库程序,必须配置LD_LIBRARY_PATH.

unix c 01的更多相关文章

  1. js 取得 Unix时间戳(Unix timestamp)

    js 取得 Unix时间戳 Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间19 ...

  2. 时间:UTC时间、GMT时间、本地时间、Unix时间戳

    转自:http://blog.csdn.net/u012102306/article/details/51538574 1.UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT ...

  3. 简述unix时间戳

    unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒. Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix ti ...

  4. 如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)

    Java time JavaScript Math.round(new Date().getTime()/1000)getTime()返回数值的单位是毫秒 Microsoft .NET / C# ep ...

  5. Unix时间戳(Unix timestamp)转换工具

    http://tool.chinaz.com/Tools/unixtime.aspx 现在的Unix时间戳(Unix timestamp)是   1440732364         Unix时间戳( ...

  6. 如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?

    Java time JavaScript Math.round(new Date().getTime()/1000) 之所以除以1000是因为getTime()返回数值的单位是毫秒 Microsoft ...

  7. 不同语言的Unix时间戳

    如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScript Math.round(new Date().getTime()/1000)ge ...

  8. 在不同编程语言中对Unix时间戳进行转换(Unix timestamp)

    最近用到unix时间转换在mysql和.net中的应用.将此资料保存在博客中. 如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScript ...

  9. 关于Unix时间戳

    如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScript Math.round(new Date().getTime()/1000)ge ...

随机推荐

  1. poj3358:欧拉定理

    又是一道用欧拉定理解的题..嗯,关键还是要建好方程,注意一些化简技巧 题目大意: 给定一个由 p / q 生成的循环小数,求此循环小数在二进制表示下的最小循环节以及不是循环节的前缀 思路: 小数化为二 ...

  2. Paint House II 解答

    Question There are a row of n houses, each house can be painted with one of the k colors. The cost o ...

  3. POJ 3378

    题目链接 查找长度为5的上升序列总数 用的树状数组+高精度 用树状数组求在i前面比i小的数有几个 用的4个树状数组,A[i][j]表示长度为i的以j为结尾的个数,A[i][j]=A[i-1][1... ...

  4. 【转】USB协议架构及驱动架构

    1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...

  5. OC 图片圆角实现

    self.imageTouX.layer.masksToBounds=YES; self.imageTouX.layer.cornerRadius=/2.0f; //设置为图片宽度的一半出来为圆形 s ...

  6. Excel函数大全

    我们在使用Excel制作表格整理数据的时候,经常要用到它的函数功能来自己主动统计处理表格中的数据.这里整理了Excel中使用频率最高的函数的功能.用法,以及这些函数在实际应用中的实例剖析,并配有具体的 ...

  7. div和span的区别

    <div>是一个块级元素,我们可以把它比喻成盒子,它没什么实际语义能用到很多地方,独占一行不能和其它元素在一行,它还能把<div>和<span>”装在盒子里”,主要 ...

  8. CaseFile

    出处 http://tools.kali.org/information-gathering/casefile CaseFile is the little brother to Maltego. I ...

  9. javascript实现倒计时程序

    最近在网上看到一道这样的面试题: 题:  网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”? 我实现了,发现挺有意思,下面把我的代码贴出来 ...

  10. sqlite的事务

    好久没用数据库,知识都忘了,之前用sqlite 逐行insert数据,发现这性能实在是太坑,10w条数据,插入大约花了100来分钟. 后来发现还有事务这么一个东西,可以大幅度降低对io的操作,测试插入 ...