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

Linux 动态连接库

发布时间:2022-12-06 10:32: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:

  #i
  文件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
 

(编辑:百客网 - 百科网)

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