zoukankan      html  css  js  c++  java
  • 静态库与动态库

    1.#include<>  编译器在标准头文件中查找头文件

       #include“”    编译器在本地头文件中查找头文件

    2.共享.h头文件

    • 把头文件复制到标准目录中,在源代码中用  #include<>  包含
    • 在include语句中使用完整路径  #include “/my_header_files/encrypt.h”
    • 使用编译器gcc -I选项

    3.共享.o目标文件

      把.o目标文件放在一个类似于共享目录的地方,当编译程序时在目标文件前加上完整路径

      如 gcc -I/完整路径

    4.共享一批文件:建立目标文件存档

    5.用nm命令查看存档中的内容  如:nm libl.a

      用ar命令创建存档       如:ar -rcs libhfsecurity.a encrypt.o checksum.o

                    (其中r表示如果.a文件存在就更新他,c表示创建存档时不显示反馈信息,s告诉ar要在.a文件开头建立索引,

                     libhfsecurity.a是要创建的.a文件名,

                     encrypt.o checksum.o是两个将保存在存档中的文件)

      用-l命令编译标准目录中的代码  如:gcc test_code.c -lhfsecurity -o test_code

                     (hfsecurity叫编译器去找一个叫libhfsecurity的存档,若使用多个存档可以设置多个-l选项)

      用-L命令编译其他目录中的代码  如:gcc test_code.c -L/my_lib -lhfsecurity -o test_code

      用ar -t<文件名>查看存档中的内容

      用-x提取文件         如:用ar -xlibhfsecurity.a encrypt.o把encrypt.o从libhfsecurity.a中提取出来

    6.保存在静态库中的所有.a文件都要以libXXX.a的形式命名。(这是命名存档的标准形式,否则编译器找不到他们)

    7.可以把存档保存在库目录中,用哪个库目录有两种选择

      标准目录,如/usr/local/lib(这个目录专门用来放本地自定义库)

      其他目录,如/my_lib

    8.静态链接 一旦用独立的目标代码创建了可执行文件,就没有办法修改这些原料,除非重新构建整个程序

       动态链接 程序由很多单独的文件组成,程序运行前把他们链接到一起

    9.创建动态库

      创建目标文件:gcc -I/includes -fPIC -c hfcal.c -o hfcal.o( -fPIC告诉gcc你想创建位置无关代码,常可省略)

      创建动态库:gcc -shared hfcal.o -o/libs/libhfcal.dll.a(不同操作系统中后缀不同,windows上为.dll.a,Linux和Unix上为.so,Mac上为.dylib)

      编译:同静态库

    10.修改动态库名称后,必须重新编译他

  • 相关阅读:
    并发与并行
    OpenCV 图像集合操作
    C++ 输出时间
    绘制模型图
    检测图像文件是否损坏
    QImage,Mat ,QByteArray转换
    图像拼接3
    图像拼接2】
    图像拼接 Stitcher
    《将博客搬至CSDN》
  • 原文地址:https://www.cnblogs.com/syyy/p/5745785.html
Copyright © 2011-2022 走看看