首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

在Linux中创办静态库和动态库

2012-09-12 
在Linux中创建静态库和动态库?【来源】http://dev.firnow.com/course/6_system/linux/Linuxjs/20090317/1620

在Linux中创建静态库和动态库

?【来源】http://dev.firnow.com/course/6_system/linux/Linuxjs/20090317/162081.html?


??? 我们通常把一些公用函数制作成函数库,供其它程序使用。 函数库分为静态库和动态库两种。

????静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。?
????动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。

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

?

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

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

?

?程序1: hello.h

?


第2步:将hello.c编译成.o文件;?
无论静态库,还是动态库,都是由.o文件创建的。因此,我们必须将源程序hello.c通过gcc先编译成.o文件。?
在系统提示符下键入以下命令得到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    # 

?


从程序hello运行的结果中很容易知道,当静态库和动态库同名时, gcc命令将优先使用动态库。

热点排行