首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 开发>文章内容
在Linux中创建静态库和动态库
来源: 作者:riechelr_hl 发布时间:2007-08-19  
我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。

        在创建函数库前,我们先来准备举例用的源程序,并将函数库的源程序编译成.o文件。

        第1步:编辑得到举例的程序--hello.h、hello.c和main.c;

        hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏幕上输出"Hello XXX!"。hello.h(见程序1)为该函数库的头文件。main.c(见程序3)为测试库文件的主程序,在主程序中调用了公用函数hello。

         #ifndef HELLO_H
         #define HELLO_H

         void hello(const char *name);

         #endif //HELLO_H
         程序1: hello.h

         #include <stdio.h>

         void hello(const char *name)
         {
          printf("Hello %s!\n", name);
         }
         程序2: hello.c

         #include "hello.h"

         int main()
         {
          hello("everyone");
          return 0;
         }
         程序3: main.c

        第2步:将hello.c编译成.o文件;

        无论静态库,还是动态库,都是由.o文件创建的。因此,我们必须将源程序hello.c通过gcc先编译成.o文件。

        在系统提示符下键入以下命令得到hello.o文件。

        # gcc -c hello.c

        #

        (注1:本文不介绍各命令使用和其参数功能,若希望详细了解它们,请参考其他文档。)

        (注2:首字符"#"是系统提示符,不需要键入,下文相同。)

        我们运行ls命令看看是否生存了hello.o文件。

        # ls

        hello.c hello.h hello.o main.c

        #

        (注3:首字符不是"#"为系统运行结果,下文相同。)

        在ls命令结果中,我们看到了hello.o文件,本步操作完成。

        下面我们先来看看如何创建静态库,以及使用它。

        第3步:由.o文件创建静态库;

        静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。

        在系统提示符下键入以下命令将创建静态库文件libmyhello.a。

        # ar cr libmyhello.a hello.o

        #

        我们同样运行ls命令查看结果:

        # ls

        hello.c hello.h hello.o libmyhello.a main.c

共3页: 上一页 1 [2] [3] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·嵌入式Linux系统下图形库讲解及
·Qt/Embedded在嵌入式Linux中的应
·Linux系统环境下的Socket编程详
·在 Fedora Core 5 上体验 Aiglx
·使用 Linux 系统调用的内核命令
·Linux 2.6.11内核文件IO系统调用
·嵌入式Linux:uClinux操作系统移
·Linux操作系统下的多进程编程(
·嵌入式系统 Boot Loader 技术内
·Linux操作系统的源代码目录树结
·Linux用户态与内核态的交互讲解
·Linux系统单一内核模块编译过程
  相关文章
·Linux系统环境下的Socket编程详
·Linux操作系统平台Vi指令大全
·概述Linux系统的驱动框架及驱动
·在 Fedora Core 5 上体验 Aiglx
·实时嵌入式系统的图形界面支持系
·嵌入式Linux平台的多协议路由器
·调整内核网络参数提高Linux系统
·Linux可加载内核模块:入侵响应
·三种嵌入式操作系统的深入分析与
·嵌入式uClinux的内核结构和开发
·Linux 2.6 内核的嵌入式系统应用
·Linux 2.6新内核的设计理念及新

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!