文件fun.c,fun.h,hello.c,hello.h,main.c动态库函数都在fun.c和hello.c里面
fun.c:
int add(int a, int b)
{
return a+b;
}
fun.h:
#ifndef _FUN_H_11
#define _FUN_H_11
int add(int a, int b);
#endif
----------------------------
hello.c:
#i nclude <stdio.h>
void output(char *ss)
{
printf("HELLO %s\n", ss);
}
hello.h
#ifndef HELLO_H_111
#define HELLO_H_111
void output(char *ss);
#endif
----------------------------
main.c:
#i nclude <stdio.h>
#i nclude "hello.h"
#i nclude "fun.h"
void
main()
{
output("world");
printf("Test Value:%d\n", add(1, 2));
}
使用libtools创建和使用安装动态库步骤:
(1)
libtool --mode=compile gcc -g -O -c hello.c
libtool --mode=compile gcc -g -O -c fun.c
libtool --mode=compile gcc -g -O -c main.c
#生成各自的o文件
(2)
libtool --mode=link gcc -g -O -o libhello.la hello.lo fun.lo -rpath /usr/local/lib -lm
#连接成动态库文件
(3)
libtool --mode=link gcc -g -O -o test main.o libhello.la -lm
#连接生成可执行文件test
(4)
libtool --mode=install cp libhello.la /usr/local/lib/libhello.la
libtool --mode=install install -c libhello.la /usr/local/lib/libhello.la
libtool -n --mode=finish /usr/local/lib
libtool install -c test /usr/local/bin/test
#安装动态库
然后就可以运行/usr/local/bin/test了,当然路径可以任意设置,这是手动过程,写成Makefile文件为:
OBJS = fun.o hello.o
LO_OBJS = main.lo fun.lo hello.lo
PACKAGE_VERSION = 1:1:1
LIBDIR=/usr/local/lib
all : test
install : libhello.la
test : libhello.la main.o
libtool --mode=link gcc -g -O -o test main.o libhello.la -lm
libhello.la : $(OBJS)
libtool gcc -g -O -o libhello.la $(LO_OBJS) -rpath ${LIBDIR} -lm -version-info ${PACKAGE_VERSION}
main.o : main.c fun.h hello.h
libtool --mode=compile gcc -g -O -c main.c
fun.o : fun.c fun.h
libtool --mode=compile gcc -g -O -c fun.c
hello.o : hello.c hello.h
libtool --mode=compile gcc -g -O -c hello.c
clean :
@rm -f OBJ/* lib*.a *~ *core *.lo *.o *.la
@rm -rf .libs
分享到:
相关推荐
总结来说,"linux动态链接库示例"是一个关于如何在Linux环境下使用C语言创建、编译和使用动态链接库(`.so`文件)的过程。通过理解这些步骤,开发者能够更好地管理和利用系统资源,提高软件的复用性和维护性。
在Linux系统中,动态链接库(Dynamic Linking Library,通常以`.so`为后缀)是一种重要的编程资源,它允许多个程序共享同一份代码,从而节省内存并方便代码维护。本教程将通过一个实例深入探讨Linux下C/C++语言如何...
德卡读卡器linux动态链接库头文件(x86)
动态链接库与普通的程序相比而言,没有main函数,是一系列函数的实现。通过shared和fPIC编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。例如下面实现一个简单的整数四则运输的动态链接...
介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函 数,装入指定的动态链接库中指定的函数,然后加以执行.
总的来说,Linux动态链接库`.so`文件的创建和使用是系统编程中的关键技能,掌握这一技术有助于优化程序性能,实现模块化设计,并有效地管理系统资源。在实际开发中,了解如何创建、管理及使用动态链接库对于提升软件...
德卡读卡器linux动态链接库头文件 ( librf.h )
Linux中动态链接库的实现与使用.pdf
德卡读卡器linux版本动态链接库 ( librf.so )
Linux的动态链接库可以通过`dlopen()`和`dlsym()`等函数进行动态加载和符号查找。 【程序移植经验】 在Windows和Linux之间移植动态链接库时,需要注意两者之间API的差异和调用约定。例如,Windows使用stdcall调用...
Linux的动态链接库是软件开发中的重要组成部分,它允许程序在运行时加载和使用外部功能,而无需在编译时就硬编码所有依赖项。动态链接库(Dynamic Link Library,通常在Linux中被称为共享对象或SO文件)可以提高资源...
#### 二、Linux动态链接库的优势 1. **节省内存空间**:动态链接库可以在多个应用程序之间共享,减少了内存占用。 2. **易于更新**:当动态链接库被多个应用程序使用时,只需更新一次即可影响所有应用程序。 3. **...
Linux动态链接库使用方法分享 动态链接库是一种共享库,允许多个模块之间共享公共的函数。Linux动态链接库的使用方法可以分为三个部分:生产动态链接库、获取动态链接库的函数和使用动态链接库。 生产动态链接库 ...
Linux下动态链接库的使用方法 Linux系统中动态链接库(Dynamic Linking Library,DLL)通常被称为共享库(Shared Library),它允许程序共享执行代码以及数据,节省内存和磁盘空间,还可以在运行时动态地加载和卸载...
动态链接库与普通的程序相比而言,没有main函数,是一系列函数的实现。通过shared和fPIC编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。例如下面实现一个简单的整数四则运输的动态链接...
测试代码:Linux共享库(动态库)与进程之间全局变量是无法共享
通过学习和实践这些示例,你可以更深入地理解Linux动态链接库的工作机制和使用方法。 此外,了解`ldd`命令用于检查程序的动态链接依赖,`nm`命令查看库中的符号信息,以及`objdump`查看编译后的二进制文件详情,...
在软件开发领域,动态链接库(Dynamic Link Library,简称DLL)技术是提高程序效率和灵活性的关键手段之一。无论是在Windows还是Linux这样的不同操作系统环境中,动态库都发挥着重要的作用。通过动态链接的方式,...