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

  • 相关阅读:
    tp3.2小结
    tp3.2
    数据库基操
    js jq 简单做一个轮播图
    ajax加jq简单的制作一个省市编码的选择框
    hibernate的OpenSessionInViewFilter用于管理session
    EncodingServlet.java为每一个servlet设置编码方式
    mybatis的增删该查
    MyBatisUtil.java.工具类,连接数据库库
    mybatis基础知识
  • 原文地址:https://www.cnblogs.com/siqi/p/4734305.html
Copyright © 2011-2022 走看看