linux应用程序开发(第2版),创建和使用库章节中共享库的测试(摘录)

来源:互联网 发布:python快速建站 编辑:程序博客网 时间:2024/06/09 02:35
 
linux应用程序开发(第2版),创建和使用库章节中共享库的测试
linux应用程序开发(第2版)(author: Michael K. Johnson)不错,只不过翻译过程中带来一些晦涩难懂讲解,总体来说,对于我来说感觉不错。
就共享库的一个简单例子,记录一下测试过程。
1、创建一个小的共享库,库的名称为libhello,所需源文件如下:
/* libhello.c */

#include 
<stdio.h>
#include 
"libhello.h"

void print_hello(void)
{
    printf(
"Hello, library. ");
    
return;
}

/* libhello.h */

void print_hello(void);

用来测试库libhello的usehello程序如下:
/* usehello.c */

#include 
"libhello.h"

int main(void)
{
    print_hello();
    
return 0;
}

2、编译和测试libhello库
1)为libhello共享库构造目标文件
gcc -fPIC -Wall --c libhello.c

2)构建libhello库,同时使用 -lc连接到C库
gcc -shared --Wl,-soname,libhello.so.0 -o libhello.so.0.0 libhello.o -lc
-Wl,-soname,libname   是传给连接器的参数,注意中间没有空格,用“,”隔开
3)创建一个从libname到库文件名的符号连接
ln -sf libhello.so.0.0 libhello.so.0
4)为连接器创建一个符号连接,使得应用程序可以通过 -lhello 链接到库
ln -sf libhello.so.0 libhello.so

5)测试,构建测试程序
gcc -Wall --c usehello.c -o usehello.o
gcc 
--o usehello -L$(pwd) -lhello

-L$(pwd),指定指定到当前目录中搜索共享库
-lhello, 指定库,即libhello.so
6)最后运行测试程序
LD_LIBRARY_PATH=$(path) ./usehello

OK. 我们可以看到输出:
Hello, library.
原文可能印刷的原因,有点问题,在调试时注意一下,另外,要了解更多详细信息,可参阅《linux应用程序开发》第8章,以及下面的链接:

http://blog.csdn.net/sonic1984/archive/2005/11/11/527708.aspx


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1702575