当前位置: 首页 > news >正文

静态库和共享库(动态库)的编译链接

文章目录

  • 静态库
    • 代码
    • 文件
    • 过程
  • 动态库
    • 代码
    • 过程

静态库

代码

gcc -c test.c -o test.o              //生成目标文件
ar crs libtest.a test.o              //生成静态库
gcc main.c -L./ -ltest -o main_test  //链接静态库

文件

静态文件test.c

#include <stdio.h>void Hello(const char* arg)
{printf("Hello %s\n",arg);
}

源文件main.c

#include <stdio.h>extern void Hello(const char * arg);int main()
{Hello("world");return 0;
}

过程

step1:生成目标文件

gcc -c test.c -o test.o

step2:编译(生成)静态库

ar crs libtest.a test.o

ls

libtest.a main.c test.c test.o

step3:链接静态库

gcc main.c -L./ -ltest -o main_test

ls

main_test libtest.a main.c test.c test.o

运行

./main_test

动态库

代码

1.创建动态库

gcc -fPIC -Wall -c test.c			   //编译为位置无关代码(PIC)
gcc -shared -o libtest.so test.o    //创建共享库

2.编译链接主程序

# 方法1 指定路径
gcc main.c -o app -L./ -lmytest    //生成可执行文件app,但找不到动态库
# 方法2 通过环境变量
pwd
export LIBRARY_PATH=$LIBRARY_PATH:(动态库所在的路径)    //相当于-L的作用

3.设置系统寻找动态库的路径

# 方法1:指定路径
cp libtest.so /usr/lib/            //系统会从这里找
./app# 方法2:环境变量
pwd                                //复制共享库的路径
sudo vim /etc/ld.so.conf    	   //通过在/etc/ld.so.conf文件中添加共享库的路径来实现
sudo ldconfig
./app

过程

ls

main.c test.c

step1:生成目标文件

gcc -fPIC -Wall -c test.c -o test.o

ls

main.c test.c test.o

step2:创建共享库

gcc -shared -o libtest.so test.o

ls

libtest.so main.c test.c test.o

step3:链接到可执行文件

gcc main.c -o app -L./ -lmytest

ls

app libtest.so main.c test.c test.o

step4:设置路径

把共享库libtest.so复制到/usr/lib/下 
或 
在/etc/ld.so.conf文件中添加libtest.so所在的路径(pwd)

相关文章:

  • SHELL 编程正则表达式
  • NY230NY233美光固态闪存NY237NY246
  • 社区养老模式:现状、困境与破局之道
  • 准确--CentOS 7.9在线安装docker
  • 8.4.1简单选择排序
  • idea maven打包很慢,怎么提速-多线程
  • 中级统计师-经济学基础知识-第二章 企业生产理论
  • ES6+核心特性
  • 电商运营公司排名
  • 挑战杯应用赛道
  • xss注入遇到转义,html编码绕过了解一哈
  • 基于 SpaCy DependencyMatcher 编写复杂依存关系规则实战指南
  • 【浅谈】Agent 的存在具有什么意义
  • java集合(九) ---- Stack 类
  • 基于飞凌嵌入式i.MX9352嵌入式开发板M核的FreeRTOS设计例程
  • 算法题(168):逆序对
  • 牛客小白月赛118
  • DMC-E 系列总线控制卡----雷赛板卡介绍(六)
  • XPath 注入与修复
  • 前端面经整理【2】
  • 品牌高端网站制作企业/seo查询平台
  • 苗木网站建设/百度推广客服电话24小时
  • 小型电子商务网站开发/路由器优化大师
  • 网站上如何放入地图/搜索网排名
  • 电商设计师自我介绍/seo网上培训课程
  • 机关网站建设存在的问题/站长之家whois查询