zoukankan      html  css  js  c++  java
  • 动态链接库、静态链接库

    包含头文件和库:
      -Idir:  指定编译查找头文件的目录,常用于查找第三方的库的头文件,例:gcc test.c –I../inc -o test。
      -Ldir :  指定链接时查找lib的目录,常用于查找第三方库。
      -llibrary 指定额外链接的lib库

    宏定义
      -DMACRO 以字符串"1"(默认值)定义 MACRO 宏。
      -DMACRO=DEFN 以字符串"DEFN"定义MACRO 宏,注意中间不能有空格。
      -UMACRO 取消对 MACRO 宏的定义。

    调试和可执行文件形式:
      -g 指示编译器,在编译的时产生调试信息。
      -ggdb 尽可能的生成gdb的可以使用的调试信息(比-g生成的信息更多些)。
      -static 禁止使用动态库,编译得到的程序会比较大,但可以自由运行。
      -share 尽量使用动态库,所以生成文件比较小,但是需要系统由动态库。

    告警选项
      -Wall 产生尽可能多的警告信息,建议始终带上
      -Werror 将所有的警告当成错误进行处理

    静态链接库:
      1.通过gcc –c命令将stack.c编成stack.o
        gcc -c stack.c

      2.通过ar命令将stack.o封装成libstack.a
        ar cr libstack.a stack.o #多个.o打包成.a文件

      3.链接
        gcc -o run main.c -L.(库目录) -lstack(库)


    库名: libstack.a
    库:stack(去掉lib和后缀得到)

    #可以合并多个.o文件
    ar cr libtest.a first.o second.o third.o

    #查看打包了哪些.o文件
    ar -t xxx.a

    #动态链接库

      1.通过gcc –c命令将stack.c编成stack.o
        gcc -c stack.c

      2. gcc -shared -o libstack.so stack.o

      3.链接
        gcc -o run main.c -L.(库目录) -lstack(库)
        gcc -o run main.c -L. -lstack
        gcc -o run main.c -L. -lstack -Wl,-rpath,dir1

      4.指定动态链接库的地址
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

      5.运行
        ./run

    #查看需要的动态链接库
    ldd run

    #动态链接库搜索目录
      1. 环境变量 LD_LIBRARY_PATH
      2. 从/etc/ld.so.conf找(用ldconfig刷新缓存)
      3. 默认的系统路径, 先是/lib(/lib64)然后是/usr/lib (/usr/lib64)
      4. 还可以编译时指定搜索路径
        -Wl,-rpath,dir1:dir2:...:dirN (多个冒号间隔)

    #
    ldconfig -v | grep b.so

    http://www.cnblogs.com/TianFang/archive/2013/01/19/2867296.html
    http://www.cnblogs.com/TianFang/archive/2013/01/18/2866952.html
    http://www.cnblogs.com/TianFang/archive/2013/01/19/2867296.html
    http://m.blog.csdn.net/blog/liuxing_lanyue/20067423

  • 相关阅读:
    POJ 1286 Necklace of Beads(Polya简单应用)
    《Nosql精粹》—— 读后总结
    基于ELK的数据分析实践——满满的干货送给你
    ELK5.0安装教程
    Oozie分布式工作流——EL表达式
    《分布式Java应用与实践》—— 后面两章
    Oozie分布式工作流——从理论和实践分析使用节点间的参数传递
    Oozie分布式工作流——Action节点
    Oozie分布式工作流——流控制
    图文并茂 —— 基于Oozie调度Sqoop
  • 原文地址:https://www.cnblogs.com/siqi/p/4734305.html
Copyright © 2011-2022 走看看