Linux下创建和使用静态和动态库

一.创建静态库与使用:
    (创建静态库):
    1.编写源代码。这个可以想像成是一种服务或一种函数,它可以为别的程序提供服务。
    2.生成目标文件:gcc -c xxxx.c -o xxxx.o(注意,这里是用-c选项来编译)
    3.使用ar命令创建静态库: ar rc libxxx.a xxxx.o
         说明:libxxx.a是你想要创建静态库的名字,根据习惯在Linux下库名称是以lib开头的,以.a结尾的表示是静态库。xxxx.o则是以这个目标文件来生成静态库。

     (使用静态库):
    1.使用静态库需要获得两个文件:头文件:xxxx.h, 和静态库文件:libxxxx.a
    2.在编译其他源文件(一些需要使用静态库中所提供的函数或服务的源文件)编译时使用:
           gcc -o final xxx.c libxxxx.a 

二。创建动态库(也称为共享库)与使用:
     (创建动态库):
    1.用 gcc 和 -fPIC 参数将源文件代码编译成.o的目标代码,这个选项生成的代码与位置无关,可以在任何地址被连接和装载。如:gcc -fPIC -Wall -g -c xxx.c -o xxx.o
    2.使用-shared来创建共享库,使用以下命令及参数:
        gcc -g -shared -W1,-soname,libxxx.so.1.0.0 -o libxxxx.so.1.0.0 xxxxx.o
        说明:-soname,libxxx.so.1.0.0:说明soname为“libxxx.so”版本为1.0.0
        注意:-W1:那个是数字1
    3.创建soname连接。因为前面定义的soname为"libxxx.so",因此需要创建一个"libxxx.so"到"libxxx.so.1.0.0"的连接:
        ln -sf libxxx.so.1.0.0 libxxx.so
   
    (使用共享库):
    1.需要三个文件:头文件xxx.h, 库文件:libxxx.so.1.0.0 及其链接libxxx.so
    2.编译:gcc -Wall -g -c xxx.c -o xxx.o
    3.连接引用动态库:gcc -g -o final xxx.o -L ./ -lxxx[这里的-lxxx是引用其共享库的名字,它是libxxx.so.1.0.0的缩写]
    4.运行:注意,运行时需要指定库的搜索路径,它由一个环境变量:LD_LIBRARY_PATH指定!
        LD_LIBRARY_PATH=$(pwd) ./final
           

      
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值