百分百考试网
 
您的位置:首页 计算机类> Linux认证> 学习教程

解读Linux编程库

发布时间:12-15

页 数:2页

上一篇:Linux职业认证考试102的必考点

下一篇:linux下智能DNS配置过程

学习FC++:C++ 函数编程库 -- Linux,C,C++,Java,Ajax,XML,perl,ph

欢迎您进入中国Linux大学, 目前我们的总注册用户数 30605, 总点击数 27645859 通过使用库您并不能回避 C++ 本身没有任何函数编程构造这一事实。FC++ 是最

libraryforpng linux下的png图像编程库libpng-1.0.10rc1 Graph

详细说明:linux下的png图像编程库libpng-1.0.10rc1-png images under linux programming library libpng-1.0.10rc1 近期下载过的用户: 吴飞 薄海光 raintiger

  随着Linux性能的不断提升和逐渐普及,会有越来越多的人在Linux下从事应用软件的开发。这里笔者根据从事Linux应用程序开发的经验,介绍Linux编程库使用的一些基础知识。

  库的定义和种类

  所谓编程库就是指始终可以被多个Linux软件项目重复使用的代码集。库是Linux软件开发所追求的目标,C语言就是一个例子,它包含了几百个可以重复使用的例程和调试程序的工具代码,其中包括函数。如果每次编写新程序都要重新写这些函数会感到非常麻烦。

  使用编程库有两个主要优点,一是可以简化编程,实现代码重复使用;二是可以直接使用许多经过调试的测试和调试工具。

  Linux下的库文件分为共享库和静态库两大类,它们两者的差别仅在程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。

  Linux的库一般在/lib或/usr/lib目录下。lib是库(Library)的英文缩写,它主要存放系统的链接库文件,没有该目录则系统就无法正常运行。/lib目录中存储着程序运行时使用的共享库。通过共享库,许多程序可以重复使用相同的代码,并且这些库可以存储在一个公共的位置上,因此能减小运行程序的大小。这个目录包含程序在链接时使用的各种库。图1是笔者/usr/lib(Red Hat Linux 9.0)目录快照。

解读Linux编程库

图1 /usr/lib目录快照

  区分库类型最好的方法是看它们的文件后缀,通常共享库以.so(Shared Object的缩写)结尾,静态链接库通常以.a结尾(Archive的缩写)。在终端缺省情况下,共享库通常为绿色,而静态库为黑色。

  库的命名和编号

  在Linux下开发应用程序时,绝大多数情况使用的都是C语言,目前Linux下最常用的C语言编译器是GCC,它的全称是GNU Compiler Collection,下文中的库介绍都以它为例。

  GCC是直接建立在内核基础上的,是Linux操作系统外层的图形界面开发工具(Qt、GTK+)和网络应用开发工具(PHP、Prel、Python)的基础和过渡。掌握了底层开发工具,可以加快和优化外层应用开发,从而达到开发速度和开发质量的和谐统一。

  Glibc 2.3.2是最新版的GNU C库。它目前不需要修改就可以在GNU Hurd、Linux i386、m68k,以及Alpha系统上执行,并且从2.1版开始加入了对Linux PowerPC、MIPS、Sparc、Sparc 64等系统的支持。

  如果想查看自己Linux计算机的Glibc版本可以使用下面命令:

  rpm -qa|grep glibc

  glibc-common-2.3.2-11.9

  glibc-2.3.2-11.9

  glibc-devel-2.3.2-11.9

  由上可见,Red Hat Linux 9.0使用的Glibc版本是2.3.2。

  1.库的命名

  库的命名比较简单,第一个特点是所有的库以lib开头,GCC命令在在-l选项所指定的文件名前会自动加入lib。第二个特点文件名以.a结尾的库是静态库。第三个特点文件名是.so的库为共享库。默认情况下,GCC在链接时优先使用共享库,只有当共享库不存在时才考虑使用静态库。

  2.库的编号

  库的编号格式如下:

  library_name.major.num.minor_.min.pathch_num

  例如,笔者Red Hat Linux 9.0的GUN数据库是libgdbm.so.0.0.2,详细表述如下:

  ◆library_name是libc.so(标准C库);

  ◆major_num是2(主版本号);

  ◆minor_.min是0(次版本号);

  ◆pathch_num是0(补丁级别号又称发行号)。

  libgdbm.so.0.0.2所在目录是/usr/lib,其大小是24576字节,这是一个ELF(Executable and Linking Format)格式的二进制格式文件,运行时由系统将其装入内存开始执行。

  ELF有三种主要类型:

  ◆适于连接的可重定位文件(Relocatable File),可与其它目标文件一起创建可执行文件和共享目标文件。

  ◆适于执行的可执行文件(Executable File),用于提供程序的进程映像,加载的内存执行。

  ◆共享目标文件(Shared Object File),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件;动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。

  常用的编程库

  库操作命令

  Linux库操作可以使用命令完成,目前常用的命令是ldd和ldconfig。

  1.ldd ldd是Library Dependency Display缩写,它的作用是显示一个可执行程序必须使用的共享库。

  (1)命令格式

  ldd [选项] 文件名

  (2)主要参数

  -d 执行重定位并报告丢失的函数。

  -r 执行对函数和数据对象的重定位,并报告丢失的函数和数据对象。

  (3)应用实例

  Perl语言是开发者喜欢使用的一种“胶水语言”(能够将许多元素连接在一起,因此它具有极强的适应性),如果需要查询有哪些共享库,则可以首先使用find命令查询这个程序的绝对路径,然后使用ldd命令:

  #find -name perl

  ldd  /usr/bin/perl

  其结果见图2所示。图2中,箭头左边的一列显示的是Prel语言所需的.so文件名, 箭头右边的一列显示是库的真实库名称。应用程序链接到库的so名字是到实际库的符号链接。以第二行为例,最后的0x40014000是库libperl.so的加载地址。由此可以看到,运行Perl语言需要9个共享库。

解读Linux编程库

图2 运行Perl语言需要的共享库

 

 

linux下图形编程库curses.hMakeall博客

linux下图形编程库curses.h(2011-04-08 19:26:50) 转载▼标签: it 我的系统是ubuntu-destop6.05的.刚开始缺少了一个文件,叫libncurses-dev.先在网上下了几

linux设置网络访问权限-Linux认证考试-

linux设置网络访问权限来源: :中国最优秀的考试信息平台 2010 linux下智能DNS配置过程 Linux文件系统安装模块化讲解 解读Linux编程库 来源:
 WindowsXP题库下载  Word2003题库下载  Excel2003题库下载
 Windonws98题库下载  Word97题库下载  Excel97题库下载
 Internet题库下载  金山文字题库下载  金山表格题库下载
 WPS_Office题库下载  FrontPage2000题库下载  AutoCAD2004题库下载
 Project2000题库下载  用友财务U8题库下载  Authorware题库下载
 PowerPoint2003题库下载  PowerPoint97题库下载 金山演示题库下载
 网络应用基础题库下载  Flash7.0题库下载
我要留言
您的邮箱:
相关内容
考试题库下载

职称计算机考试题库下载

最近更新

热点排行

©2010-2011 100ksw.com 版权所有