静态库与动态库制作与使用

静态库

1. gcc获得.o文件

gcc -c xx.c xx.c

 

2.将.o文件打包成libxxx静态库,使用ar工具(archive)

ar rcs libxxx.a xxx.o xxx.o

  r - 将文件插入备存文件中

  c - 建立备存文件

  s - 索引

 使用

gcc main.c -o app -I ./include -L ./lib -l calc

将main.c 编译链接为app

-I 表示从之后的目录寻找头文件
-L 表示从之后的目录寻找静态库

-l 表示库名称,(注意:不是库文件名称libcalc.a)

 动态库

命名规则

libxxx.so

  lib:前缀(固定)

  xxx:库的名字

  .so:后缀(固定)

  在Linux下是一个可执行文件

Windows:libxxx.dll

动态库的制作

  1.gcc得到.o文件,得到和位置无关的代码

gcc -c -fpic/-fPIC a.c b.c

  2.gcc的到动态库

gcc -shared a.o b.o -o libcalc.so

   3.动态库使用

gcc main.c -o main -I ./include -L ./lib -l calc

直接输入./main会出现找不到动态库的错误

ldd main
//列出可执行程序所使用的动态库和指向地址

 

1.临时配置:在命令行里配置动态库路径

新建终端就会失效

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库绝对路径

// 绝对路径可进入到动态库的目录下输入pwd 获取

2.永久配置

  用户级别:

    在home目录下:vim .bashrc

    在最后一行插入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库绝对路径

    保存退出后,输入source .bashrc使之生效

  系统级别:

    在可执行程序所在目录下

sudo vim /etc/profile

·    最后一行插入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库绝对路径

    保存退出后,输入source ./etc/profile使之生效

 

posted @ 2022-11-10 20:31  WTSRUVF  阅读(45)  评论(0编辑  收藏  举报