静态库与动态库

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.修改动态库名称后,必须重新编译他

posted @ 2016-08-07 11:21  farmerspring  阅读(181)  评论(0编辑  收藏  举报