`

教你在Linux操作系统中如何创建函数库

阅读更多

 

函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

  程序1: hello.h

以下是代码片段:
    #ifndef HELLO_H
  #define HELLO_H


  void hello(const char *name);
  #endif //HELLO_H


  程序2: hello.c

以下是代码片段:
    #include
  void hello(const char *name)
  {
  printf("Hello %s!\n", name);
  }


  程序3: main.c

以下是代码片段:
   #include "hello.h"
  int main()
  {
  hello("everyone");
  return 0;
  }


  无论动态库还是静态库都需要用到.o文件来生成,先编译生成.o文件。

  # gcc -c hello.c

  1:创建静态库

  静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。

以下是代码片段:
# ar cr libmyhello.a hello.o


  使用静态库:只需要在你的源程序中加入包含你所需要使用到的函数的声明(即包含头文件),然后在gcc生成目标文件时候指明静态库就OK了(除非你包含的头文件在/usr/include,库文件在标准库/usr/lib,/lib下,否则你得显示指明他们的路径)

以下是代码片段:
    # gcc -o hello main.c -L. -lmyhello
  # ./hello
  Hello everyone!


  删除静态库文件运行./hello,程序正常运行,说明静态库公用函数已经链接到目标文件。

  2: 利用.o文件创建动态库

  动态库文件扩展名为.so。

以下是代码片段:
 # gcc -shared -fPCI -o libmyhello.so hello.o


  动态库的使用与静态库使用方式一样

以下是代码片段:
    # gcc -o hello main.c -L. -lmyhello
  # ./hello
  ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory


  哦!出错了。快看看错误提示,原来是找不到动态库文件libmyhello.so。程序在运行时,会在/usr/lib和/lib等目录中查找需要的动态库文件。若找到,则载入动态库,否则将提示类似上述错误而终止程序运行。

  如何找到生成的动态库有3种方式:

  1)把库拷贝到/usr/lib和/lib目录下。

  (2)在LD_LIBRARY_PATH环境变量中加上库所在路径。

  例如动态库libhello.so在/home/example/lib目录下:

  $export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/example/lib

  (3) 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾,并执行ldconfig刷新。这样,加入的目录下的所有库文件都可见。

 

分享到:
评论

相关推荐

    Linux平台下创建和使用用户函数库.pdf

    Linux 平台下创建和使用用户函数库是指在 Linux 操作系统下创建和使用用户定义的函数库。函数库是一种预编译的代码集合,包含了一个或多个函数,可以在不同的应用程序中被调用和使用。 Linux 下有关函数库的概念 ...

    Linux 函数库 手册

    在Linux系统中,函数库是开发者进行程序设计的重要资源,它们提供了一系列预定义的函数,使得程序员能够方便地实现各种复杂的功能,而无需从零开始编写代码。本篇将主要探讨Linux下的C语言函数库,因为C语言是Linux...

    Linux系统中popen函数的缺陷与改造方案.pdf

    Linux 操作系统中,popen 函数是一个常用的函数,用于执行 shell 命令并得到执行结果。然而,Linux 库提供的 popen 函数却有两个致命的缺陷。本文将分析这两个缺陷产生的原因,并给出改造方案。 popen 函数的使用...

    linux c函数库 doc

    在Linux操作系统中,C函数库是开发者进行系统级编程和应用程序开发的重要工具。"doc"通常指的是文档,这里指的是关于Linux C函数库的文档资料。本文将深入探讨Linux C函数库的基本概念、重要性以及一些关键函数,...

    Linux (C语言)函数库详解词典

    在IT领域,Linux操作系统与C语言的结合是程序员们日常工作中不可或缺的一部分。C语言作为底层编程的首选,其高效、灵活的特点使得它在Linux系统开发中占有重要地位。本资源"Linux (C语言)函数库详解词典"提供了...

    linux_C函数库中文手册.zip

    在Linux环境中,除了标准C库之外,还有许多与操作系统紧密相关的库函数,例如在中定义的POSIX函数,它们提供了与系统交互的能力,如打开、读写文件、创建进程等。另外,、等头文件包含的函数则用于文件状态获取、...

    Linux操作系统编程教学pdf

    Linux操作系统编程是IT领域中的重要组成部分,特别是在服务器管理和软件开发中。这个压缩包包含了一系列关于Linux操作系统编程的PDF教程,涵盖了多个关键主题,对于想要深入理解Linux系统编程的初学者和开发者来说,...

    常用Linux函数库大全

    在IT领域,Linux操作系统因其开源、稳定和高效的特点,在服务器端和嵌入式系统中广泛应用。函数库,尤其是C语言的库,是Linux系统中不可或缺的一部分,它们为开发者提供了丰富的功能接口,使得软件开发变得更加便捷...

    linux_C函数库手册

    在Linux操作系统中,C语言是核心开发语言,其丰富的函数库为程序员提供了强大的功能支持。"Linux_C函数库手册"是一份集中的资源,旨在帮助开发者理解和使用这些函数。手册通常包含详细的函数介绍、参数说明、返回值...

    html可检索版Linux C函数库

    Linux操作系统则是开源的、基于Unix的系统,开发者可以深入系统层面进行定制和优化,因此C语言是Linux开发的首选语言。 Linux C函数库,也称为GNU C Library,通常被称为glibc,它是Linux系统中C编程的标准库。它...

    Linux系统调用和C函数库(1).pdf

    #### 描述:Linux系统调用和C函数库(1).pdf,希望对你有所帮助 文档提供了关于Linux系统调用和C函数库的基本知识,旨在帮助读者更好地理解和应用这些核心概念。 #### 标签:Linux 系统调用 C函数库 文档围绕Linux...

    linux—C函数库

    在Linux操作系统中,C函数库,也称为C标准库,是C编程语言不可或缺的一部分。它提供了大量的函数,供程序员在开发应用程序时使用,以实现各种常见的任务,如输入/输出操作、内存管理、字符串处理、数学运算等。本文...

    Linux操作系统(内含各种Linux操作入门相关教程、Linux学习总结、常用命令汇总等)

    linux操作系统,[Linux电子书合集],Linux 系统命令及其使用详解(大全),Linux_C_函数库,Linux_操作系统-基础操作-教学,linux必读----高手必经之路,Linux必学的60个命令v1.0.1,linux编程基础,Linux操作系统快速...

    C常用的LinuxC语言函数库

    本文将详细介绍Linux中C语言函数库中的字符操作函数和字符串操作函数,帮助开发者更好地理解和应用这些基础但重要的函数。 #### 二、字符操作函数 在Linux下的C语言编程中,字符操作函数主要用于单个字符的处理。...

    LinuxC函数库中文手册

    《Linux C函数库中文手册》是一本针对Linux操作系统下C语言编程的重要参考资料,它详尽地阐述了在Linux环境中常用C函数的用法,并且配备了丰富的实例,便于读者理解和掌握。这本书采用CHM(Microsoft Compiled ...

    Linux C函数库参考手册

    Linux C函数库,通常指的是GNU C Library,也称为glibc,是Linux操作系统中核心的C编程接口。这个库为开发者提供了大量的系统调用和标准C库函数,使得编写高效的、跨平台的C语言程序成为可能。Linux C函数库参考手册...

    linux下c语言函数库参考手册

    在Linux环境下进行C语言开发,掌握一套全面的函数库参考手册是至关重要的。这份手册不仅提供了C语言在Linux系统中的核心功能与应用指南,还深入介绍了如何利用这些函数来优化程序性能、处理文件I/O、网络通信、内存...

    linux高级编程 linux c函数库

    在Linux操作系统中,高级编程涉及对系统调用、C函数库和C++标准库的深入理解和熟练运用。本文将详细探讨Linux环境下C和C++函数库的重要知识点,以及如何利用这些知识进行高效的程序开发。 首先,Linux C函数库,也...

Global site tag (gtag.js) - Google Analytics