加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 动态连接库

发布时间:2022-11-16 17:01:25 所属栏目:Linux 来源:转载
导读: 文件fun.clinux动态库,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

文件fun.clinux动态库,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

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

#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

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!