嵌入式 Linux中.a,.la,.o,.so文件的意义和编程实现

原创 2013年12月02日 14:42:28
Linux下文件的类型是不依赖于其后缀名的,但一般来讲:
  .o,是目标文件,相当于windows中的.obj文件
  .so 为共享库,是shared object,用于动态连接的,和dll差不多
  .a为静态库,是好多个.o合在一起,用于静态连接
  .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看.la文件的格式 $file.la
  .la: ASCII English text
  所以可以用vi来查看其内容。
  创建.a库文件和.o库文件:
  [yufei@localhost perl_c2]$ pwd
  /home/yufei/perl_c2
  [yufei@localhost perl_c2]$ cat mylib.c
  #include 
  #include 
  void hello(){
  printf("success call from perl to c library\n");
  }
  [yufei@localhost perl_c2]$ cat mylib.h
  extern void hello();
  [yufei@localhost perl_c2]$ gcc -c mylib.c
  [yufei@localhost perl_c2]$ dir
  mylib.c mylib.h mylib.o
  [yufei@localhost perl_c2]$ ar -r mylib.a mylib.o
  ar: 正在创建 mylib.a
  [yufei@localhost perl_c2]$ dir
  mylib.a mylib.c mylib.h mylib.o
  动态链接库.so的编译与使用- -
  动态库.so在Linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。
  1、动态库的编译
  下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
  so_test.h:
  #include 
  #include 
  void test_a();
  void test_b();
  void test_c();
  test_a.c:
  #include "so_test.h"
  void test_a()
  {
  printf("this is in test_a...\n");
  }
  test_b.c:
  #include "so_test.h"
  void test_b()
  {
  printf("this is in test_b...\n");
  }
  test_c.c:
  #include "so_test.h"
  void test_c()
  {
  printf("this is in test_c...\n");
  }
  将这几个文件编译成一个动态库:libtest.so
  $ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

嵌入式 Linux中.a,.la,.o,.so文件意义以及编程实现小结

先来个例子: root@u12d32:/qy_work/a3518_v080_develop/hi_test/cvr_test/sqlite_sdb/joseph_sqlite3/x86/lib# ...
  • skdkjxy
  • skdkjxy
  • 2014年09月07日 14:51
  • 443

Linux中.a,.la,.o,.so文件的意义和编程实现

http://www.233.com/linux/fudao/20081120/094425945.html Linux下文件的类型是不依赖于其后缀名的,但一般来讲:   .o,是目标文件...
  • dongwuming
  • dongwuming
  • 2013年06月05日 10:45
  • 611

Linux中.a,.la,.o,.so文件的意义和编程实现

Linux中.a,.la,.o,.so文件的意义和编程实现 Linux下文件的类型是不依赖于其后缀名的,但一般来讲:     .o,是目标文件,相当于windows中的.obj文件     .so...
  • qq550764107
  • qq550764107
  • 2014年02月20日 23:06
  • 329

Linux中.a,.la,.o,.so文件的意义和编程实现

Linux下文件的类型是不依赖于其后缀名的,但一般来讲:   .o,是目标文件,相当于windows中的.obj文件   .so 为共享库,是shared object,用于动态连接的,和dll差...
  • lzyzuixin
  • lzyzuixin
  • 2013年01月06日 14:28
  • 626

Linux中.a,.la,.o,.so文件的意义和编程实现

Linux下文件的类型是不依赖于其后缀名的,但一般来讲:     .o,是目标文件,相当于windows中的.obj文件     .so 为共享库,是shared object,用于动态连接的,和dl...
  • qq_14898543
  • qq_14898543
  • 2015年11月13日 12:29
  • 217

Linux中.a,.la,.o,.so文件的意义和编程实现

Linux下文件的类型是不依赖于其后缀名的,但一般来讲:   .o,是目标文件,相当于windows中的.obj文件   .so 为共享库,是shared object,用于动态连接的,和dll差...
  • LW_HM
  • LW_HM
  • 2014年03月21日 00:36
  • 380

嵌入式LINUX下I/O资源的实现、管理和操作

作者:wincemobile 转自:http://blog.csdn.net/wincemobile/article/details/5898990 几乎每一种外设都是通过读写设备...
  • whw8007
  • whw8007
  • 2014年02月12日 08:57
  • 608

Linux的.a、.so和.o文件

我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两 种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态 库在程序编译时并不会被连接到目标代码...
  • chlele0105
  • chlele0105
  • 2014年04月14日 17:03
  • 10195

嵌入式Linux串口应用编程之串口配置

串口的设置主要是设置struct termios结构体的各成员值,如下所示:     #include     struct termios     {         unsigned...
  • wangzhen209
  • wangzhen209
  • 2015年04月24日 15:24
  • 2536

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

原文链接:http://xcecd.blog.163.com/blog/static/679667520102175101812/ o: 编译的目标文件 a: 静态库,其实...
  • user_920
  • user_920
  • 2016年09月28日 16:57
  • 244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 Linux中.a,.la,.o,.so文件的意义和编程实现
举报原因:
原因补充:

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