_008_gcc_静态&动态库

Posted huangtiandi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了_008_gcc_静态&动态库相关的知识,希望对你有一定的参考价值。

=====================================

技术分享图片

 

编译和运行 


   gcc -E test.c -o test.i    这里的-E表示预编译,-o表示

指定新文件的的名字

  gcc -S test.i -o  test.s    这里开始编译成汇编文件

  gcc -c test.s -o  test.o   生成二进制文件

  gcc test.o -o  testApp   链接文件

  gcc test.c -o  testApp    直接生成可执行文件

  gcc test.c *.c  -c     把所有.c生成二进制文件,静态库需要这么做

会自动生成.o后缀的文件,虽然是直接生成,但是内部会自动完成所有步骤

  gcc test.c -I   ./include -o testApP  如果头文件不在同一级目录

需要用-I来指定头文件的目录

  ./testApp    必须加./表示本文件下的testApp程序

因为testApp并没有在环境变量

  gcc test.c -I   ./include -o testApp -D DEBUG  这个DEBUG

是代表宏,指定运动一些代码用ifdef,但是不可能每个cpp文件里都包含

#define DEBUG ,而且都要去修改,所以可以在外部指定宏

  gcc test.c -I   ./include -o testApp -D DEBUG -o3

这个o3表示优化的等级

  gcc test.c -I   ./include -o testApp -D DEBUG -o3 -Wall

这个表示启用Warling警告提示

  gcc test.c -I   ./include -o testApp -D DEBUG -o3 -Wall

-g   加了-g表示再应用程序里添加了一些调试代码

 

静态库


   命名规则  lib+库的名字+.a   libmytest.a 那么mytest是库名字

 

  制作步骤1 将生成的.0文件打包, ar rcs 静态库名字 生成的所有的.o

文件.  ar是一个工具,rcs是参数, 后面2个也是参数 ,会生成一个.a的文件

  

  发布  给使用者.o和.h文件,这样使用者才能使用,发布者使用且编译的时候,gcc main.c lib/xxxx.a 要指定静态库

 

 

  

 

 

 

 

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




以上是关于_008_gcc_静态&动态库的主要内容,如果未能解决你的问题,请参考以下文章

gcc升级后静态库要升级吗

静态库中的未定义符号链接到动态库

动态库和静态库

Linux下gcc编译控制动态库导出函数小结

linux中,包含静态库的动态库导出时,静态库的函数也被一并导出

C++中动态库调用动态库如何调用啊