Linux C/C++动态库制作

简介: Linux C/C++动态库制作
  • 概念:程序在编译时不会把库文件的二进制代码链接到目标程序中,而是在运行时候才被载入。
    如果多个进程中用到了同一动态库中的函数或类,那么在内存中只有一份,避免了空间浪费问题。
  • 特点:
  • 程序运行在运行的过程中,需要用到动态库的时候才把动态库的二进制代码载入内存。
  • 可以实现进程之间的代码共享,因此动态库也称为共享库。
  • 程序升级比较简单,不需要重新编译程序,只需要更新动态库就行了。

├── app

│ └── demo.cpp

└── tools

├── public.cpp

└── public.h

动态库制作

[root@localhost tools]# g++ -fPIC -shared -o libpublic.so public.cpp

├── app

│ └── demo.cpp

└── tools

├── libpublic.so

├── public.cpp

└── public.h

编译

//不推荐
[root@localhost app]# g++ -o demo demo.cpp /root/code/02demo/tools/libpublic.so
//推荐
[root@localhost app]# g++ -o demo demo.cpp -L/root/code/02demo/tools -lpublic
./demo: error while loading shared libraries: libpublic.so: cannot open shared object file: No such file or directory

查询动态库目录

echo $LD_LIBRARY_PATH

设置环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/code/02demo/tools

├── app

│ ├── demo

│ └── demo.cpp

└── tools

  ├── libpublic.so

  ├── public.cpp

  └── public.h



相关文章
|
1月前
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
450 10
|
26天前
|
Linux vr&ar C语言
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
Linux怎样更新Centos下Gcc版本支持C17?Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理)
88 2
|
6天前
|
Linux 编译器 vr&ar
【Linux】静态库和动态库
本文详细介绍了Linux系统中静态库和动态库的概念、区别、制作与使用方法,包括它们在链接时的区别、加载机制以及优缺点。
7 0
|
29天前
|
Linux C++
c++高级篇(三) ——Linux下IO多路复用之poll模型
c++高级篇(三) ——Linux下IO多路复用之poll模型
|
29天前
|
缓存 监控 网络协议
c++高级篇(二) ——Linux下IO多路复用之select模型
c++高级篇(二) ——Linux下IO多路复用之select模型
|
22天前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
23 0
|
22天前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
15 0
|
29天前
|
算法 Linux Shell
c++高级篇(一) —— 初识Linux下的进程控制
c++高级篇(一) —— 初识Linux下的进程控制
|
Linux C++
C++ 调用Linux系统命令
一个简单的C++程序,Test函数用来测试调用Linux的系统命令ls -l #include #include #include #include #include #include using namespace std; const i...
2165 0
|
7天前
|
设计模式 安全 编译器
【C++11】特殊类设计
【C++11】特殊类设计
26 10