ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-16 16:32:59  阅读:172  来源: 互联网

标签:gcc sub 静态 LD LIBRARY add PATH 动态 制作


静态链接

(1)制作静态链接

#生成目标文件
gcc -c add.c -o add.o
gcc -c sub.c -o sub.o
#制作静态库
ar -rcs libmylib.a add.o sub.o

在使用ar工具是时候需要添加参数:rcs

  • r更新
  • c创建
  • s建立索引

(2)使用静态库

gcc main.c -L[静态库路径] -I[头文件路径] -lmylib[库名] -o main

参数说明:

  • -L:表示要连接的库所在目录
  • -I./: I(大写i) 表示指定头文件的目录为当前目录
  • -l(小写L):指定链接时需要的库,去掉前缀和后缀

动态链接

(1)动态库制作

gcc -fPIC -c add.c -o add.o
gcc -fPIC -c sub.c -o add.o
#-fpic 创建与地址无关的目标文件
gcc -shared add.o sub.o -o libmylib.so
#生成共享库,-shared

(2)动态库使用

gcc main.c -L[动态库路径] -I[头文件路径] -lmylib[库名] -o main

(3)让系统找到动态库

  1. 拷贝自己制作的共享库到/lib或者/usr/lib(不能是/lib64目录)

  2. 临时设置LD_LIBRARY_PATH:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径

  3. 永久设置,把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径,设置到

    ~/.bashrc或者 /etc/profile文件中

    vim ~/.bashrc
    #最后一行添加如下内容:
    #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/mylib/
    source ~/.bashrc 
    
  4. 使用符号链接, 但是一定要使用绝对路径

    sudo ln -s /home/me/mylib/libtest.so /lib/libtest.so

标签:gcc,sub,静态,LD,LIBRARY,add,PATH,动态,制作
来源: https://www.cnblogs.com/rookiezjz/p/15810450.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有