AIX环境下,调用动态库以及静态库

前提知识:

动态库后缀.so  静态库后缀.a

-c  只编译不链接

-o  指定输出名

-L 指定链接库的查找路径

-l 指定链接的库名

-I 文件里面包含了头文件,-I后面跟着查找头文件的路径

上面几项可以满足编译目标

生成.a文件

命令ar 

q:快速追加。增加新模块到库的结尾处

t 查看.a文件里面包含的成员

x 提取出.a文件里的成员,如果不指定提取的成员,将全部提取(注:不删除归档文件里的成员)

例:

G2DBT1:/wxp/so_a#ar t libhu.a
libhu.o
cmaps.o
sccsid.o
libhu_r.o
libhu32_r.o
libhu32.o

G2DBT1:/wxp/so_a#ar x libhu.a libhu.o
G2DBT1:/wxp/so_a#ls
libhu.a  libhu.o


d 删除模块中的成员

例:

G2DBT1:/wxp/so_a#ar d libhu.a libhu.o
G2DBT1:/wxp/so_a#ar t libhu.a
cmaps.o
sccsid.o
libhu_r.o
libhu32_r.o
libhu32.o

m 移动模块中成员的顺序,配合a(移动到指定成员的后面) b(移动到指定模块的前面) 来使用,如果不指定移动的位置,默认为最后面

G2DBT1:/wxp/so_a#ar -mb cmaps.o libhu.a libhu.o
G2DBT1:/wxp/so_a#ar t libhu.a
libhu.o
cmaps.o
sccsid.o
libhu_r.o
libhu32_r.o
libhu32.o

v  列出执行过程中的附加信息

据以上得出如果创建一个.a文件,命令如下:

/enpc/wxp/so_a$cc -c sayhello.c
/enpc/wxp/so_a$ls
hello.c     sayhello.c  sayhello.o
/enpc/wxp/so_a$ar -rv libhello.a sayhello.o
ar: Creating an archive file libhello.a.
a - sayhello.o
/enpc/wxp/so_a$ls
hello.c     libhello.a  sayhello.c  sayhello.o


函数调用.a的命令

/enpc/wxp/so_a$cc hello.c -L./ -lhello -o sayhello
/enpc/wxp/so_a$ls
hello.c     libhello.a  sayhello    sayhello.c  sayhello.o
/enpc/wxp/so_a$./sayhello
say hello
/enpc/wxp/so_a$ldd sayhello
sayhello needs:
         /usr/lib/libc.a(shr.o)
         /unix
         /usr/lib/libcrypt.a(shr.o)


ldd的命令里面居然没有libhello.a文件

静态文件,有没有或许都不重要!


生产一个动态文件:


使用makefile文件来生产静态库并调用成功


该文件还不是很成功

clean:
-rm *.o
-rm *.a

all:main.o libhello.a
cc -o all main.o -L./ -lhello
  
main.o:hello.c
cc -c hello.c -o main.o
  
libhello.a:sayhello.o
ar -rv libhello.a sayhello.o
  
sayhello.o:sayhello.c
cc -c sayhello.c -o sayhello.o

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值