.a与.so区别

原创 2015年11月17日 20:57:13

简洁概括.o.a .so文件的区别

      .o: 目标文件

      .a:静态库文件,又称目标文件的集合

      .so:动态库文件


生成方法:

1.c2.c 3.c为例

.o文件

       gcc-c 1.c -o 1.o(gcc–c 1.c)

       gcc-c 2.c -o 2.o(gcc–c 2.c)

       gcc-c 3.c -o 3.o(gcc–c 3.c)

.a文件

       ar rcs mylib.a 1.o 2.o 3.o

.so文件

       gcc1.c 2.c 3.c -fPIC -shared -o libmytest.so

调用方法:

1.c

#include“my.h”

voidprintCat()

{

       printf(“MiaoMiao ~ ~ ~ ~\n”);

}

my.h

#include<stdio.h>

voidprintCat(); //1.c

voidprintDog(); //2.c

voidprintPig(); //3.c

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

test.c

#include“my.h”

int main()

{

       printCat();

       return0;

}

.a文件的调用:gcc test.c -o test mylib.a

.so文件的调用:gcc test.c -o test -L. -lmytest

注:若想将.so文件作为共享库,需要将.so文件放到特定的目录下面/usr/local/lib,但即使这样编译还是会报错,需要使用ldconfig命令来更新/ect/ld.so.cache才会生效

版权声明:有不正确的地方,还望各位指正指导,Thanks!

linux下的so、o、lo、a、la文件有什么区别?

o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息 la: 使用l...
  • GMstart
  • GMstart
  • 2011年08月08日 14:18
  • 653

.dll与.so文件的区别和构成

动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import   directory的...

dll和so文件区别与构成

转自:http://blog.sina.com.cn/s/blog_4b9b714a0100ieam.html 动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操...

dll和so文件区别与构成

动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import   directory的...

DLL文件与so文件的区别

动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import   directory的...

jar文件和.so文件的区别

so文件.so文件是Linux系统的可执行文件,相当于windows上的exe执行文件,只可以在Linux系统运行。 so文件就是常说的动态链接库,都是C或C++编译出来的。 与Java比较就是:它通...
  • acMiner
  • acMiner
  • 2017年06月23日 17:31
  • 437

Java中的jar和so文件的区别

Java中有jar和so文件,但是Android中也有jar和so文件。但是两者有什么区别呢?So文件:.so文件是Linux系统的可执行文件,相当于windows上的exe执行文件,只可以在Linu...

Linux下动态库(.so)和静态库(.a) 的区别(略有增删减)

linux下有两种库:动态库和静态库(共享库) 二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大。 动态库(共享库)的代码在可执行程序运行时才...

dll和so文件区别与构成

转自:http://blog.sina.com.cn/s/blog_4b9b714a0100ieam.html  动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大...

linux .o a .so .la .lo的区别

 o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息 la:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.a与.so区别
举报原因:
原因补充:

(最多只允许输入30个字)