现在的位置: 首页 > web前端 > 正文

linux下c语言工程so文件

2020年07月21日 web前端 ⁄ 共 932字 ⁄ 字号 评论关闭

  linuxc下的c文件h文件o文件so文件a文件可执行文件gcc使用。so文件可以用于多个进程的共享使用(位置无关的才行),所以又叫共享库文件。程序在使用它的时候,会在运行时把它映射到自己进程空间的某一处,其不在使用它的程序中。


  linux下c语言工程so文件:


  c文件:主要每个模块的原代码都在c文件中。


  h文件:每个c文件都跟着一个h文件,h文件的作用是放着c文件中函数的声明,结构体的定义,宏的定义等。


  o文件:目标文件。每个文件经过编译都会形成一个目标文件(二进制文件),多个目标文件链接后才能形成可执行文件。


  o文件如何形成:gcc-ca.c


  可执行文件:


  不论是c文件还是o文件,都是无法执行的,最终还要生成可执行的文件。


  gcc a.cb.cc.c-orun 将c文件编译后链接,生成可执行文件


  gcca.ob.oc.o-orun 将目标文件链接为可执行文件


  a文件:将o文件打包生成的静态库。


  生成so文件


  so文件:形成动态库,当程序运行的时候才加载进来。


  生成so文件:gcca.cb.cc.c-fpic -shared-o librun.so


  .o文件


  .o文件是源码编译出的二进制文件。


  你先得了解从源代码到可执行文件的过程。以一个简单的add函数源文件为例。


  intadd(inta,intb)


  {


  returna+b;


  }


  先预处理为.i文件


  gcc-Eadd.c-oadd.i


  再编译为汇编文件


  gcc-Sadd.i-oadd.s


  再汇编为二进制的.o文件


  gcc-cadd.s-oadd.o


  好,现在.o文件出来了。它就是C/C++编译的产物,因为C/C++编译的单元编译。每一个.c/.cpp文件就是一个编译单元,把所有单元都编译好之后,再连接成一个完成的程序。


  .a文件


  .a文件实质上就是.o文件打了个包。一般把它叫做静态库文件。它在使用的时候,效果和使用.o文件是一样的。


  .so文件


  .so文件就不一样了,它不是简单的.o文件打了一个包,它是一个ELF格式的文件,也就是linux的可执行文件。


  总之,生成so文件给大家简单的介绍了一些,希望大家多看看。

抱歉!评论已关闭.