首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>经验技巧>正文

Linux下库文件的创建和使用及其他

http://www.oklinux.cn  2009-05-19  IT专家网    会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

首先说明一下头文件、库文件、库函数这三个概念的区别。头文件:即后缀为.h的文件,在其中对变量和函数原型进行了声明。库文件:提供有库函数的文件。一种是静态连接的后缀为.a的文件,在程序编译时连接;一种是共享库,文件后缀为.so,在程序运行的时候才进行连接。库函数:在库文件里提供的函数。

下面,我们用一个实例介绍一下Linux下怎么样创建库文件以及怎么样应用库文件。

文件1: mymath.h

#ifndef MYMATH_H

#define MYMATH_H

int xiangjia(int a,int b);

int xiangjia(int a,int b);

#endif

文件2:xiangjia.c

int xiangjia(int a,int b)

{

return a b;

}

文件3:xiangjian.c

int xiangjian(int a,int b)

{

return a-b;

}

文件4:main.c

#include "mymath.h"

#include “stdio.h”

int main()

{

printf(“%d”,xiangjia(65,45));

printf(“%d”,xiangjian(65,45));

return 0;

}

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

# gcc -c xiangjia.c xiangjia.c main.c

一、创建静态库

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

# ar cr libmath56.a xiangjia.o xiangjian.o

链接静态库,生成可执行文件:

#gcc –o math main.o libmath56.a

或者 # gcc –o math main.c –L. –lmath56

执行:

# ./math

110

20

二、利用.o文件创建动态库

动态库文件扩展名为.so,使用下面的命令可以生成l ibmath56.so文件。

# gcc -shared -fPCI -o libmath56.so xiangjia.o xiangjia.o

生成可执行文件math2

# gcc –o math2 main.c -L. –lmath56

执行:

# ./math

./math: error while loading shared libraries: libmath56.so: cannot open shared object file: No such file or directory

呕哦,出错了!快看看错误提示,原来是找不到共享库文件libmath56.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刷新。这样,加入的目录下的所有库文件都可见。

当静态库和动态库同名时, gcc命令将优先使用动态库。

共2页: 上一页 1 [2] 下一页

上一篇:Linux内存管理之分段分页机制   下一篇:Unix系统中LVM硬盘管理的好帮手

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Unix系统中LVM硬盘管理的好帮手
·Linux内存管理之分段分页机制
·如何用U盘给戴尔mini 9重装原始的Ubuntu 9.04
·在Inspiron Mini 9安装Dell版的Ubuntu 9.04的详细介绍
·在戴尔Mini 9安装Ubuntu 9.04 Netbook Remix
·Ubuntu 9.04下安装ibus中文输入法
·Vista下用Wubi安装Ubuntu 9.04
·戴尔Mini 10追加Ubuntu系统和SSD硬盘
·Linux的磁盘配额配置
·为何选择Ubuntu Linux
·Ubuntu 9.04自动安装微软雅黑等字体
·从后现代主义视角看当下的Linux文化
·更改Fedora 11的plymouth开机动画
·Wakoopa现在支持Ubuntu Linux了
·Ubuntu 9.10:在性能飞跃中昂首起步
·Fedora要赶上Ubuntu为时未晚
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Ubuntu 9.04下安装ibus中文输入法
·在戴尔Mini 9安装Ubuntu 9.04 Netbook
·在Inspiron Mini 9安装Dell版的Ubuntu
·如何用U盘给戴尔mini 9重装原始的Ubunt
·Unix系统中LVM硬盘管理的好帮手
·Linux内存管理之分段分页机制
·Vista下用Wubi安装Ubuntu 9.04
·戴尔Mini 10追加Ubuntu系统和SSD硬盘
·Linux的磁盘配额配置
·为何选择Ubuntu Linux
·Ubuntu 9.04自动安装微软雅黑等字体
·从后现代主义视角看当下的Linux文化
  阅读排行
·安装Ubuntu分区的推荐方案及方法
·新手看招:调试工具GDB基本知识全接触
·Ubuntu下安装苹果MAC风格主题(图)
·Ubuntu 3D桌面特效展示!超绚目(图)
·Linux爱好者入门教程
·Linux下安装tar.gz、rpm、tar.bz2软件
·Ubuntu下安装MP3播放器Audacious
·Windows XP虚拟机vmware中安装Linux步
·红旗Linux桌面版6.0SP1发布及下载
·Fedora 9 配置yum源
·Ubuntu看安装Sopcast看网络电视(配图)
·新手学堂 Ubuntu中安装bin文件
·Ubuntu 8.04 硬盘安装过程
·Ubuntu 8.04下fcitx输入法的安装及使用
·Ubuntu 8.04如何安装之完美硬盘安装法
网摘收藏: