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++基础与进阶知识点,不仅用于面试,平时开发也用得上!
|
12天前
|
Linux C++
Linux C/C++目录和文件的更多操作
Linux C/C++目录和文件的更多操作
|
12天前
|
Linux C++
Linux C/C++ 系统错误
Linux C/C++ 系统错误
|
12天前
|
Linux C++
Linux C/C++目录操作
Linux C/C++目录操作
|
12天前
|
安全 Unix Linux
Linux C/C++时间操作
Linux C/C++时间操作
|
12天前
|
NoSQL Linux C++
Linux C/C++ gdb调试正在运行的程序
Linux C/C++ gdb调试正在运行的程序
|
12天前
|
NoSQL Linux C++
Linux C/C++ gdb调试core文件
Linux C/C++ gdb调试core文件
|
1月前
|
Linux 编译器 Shell
深入理解Linux中的动态库与静态库
深入理解Linux中的动态库与静态库
|
1月前
|
存储 Linux 编译器
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
17 0
|
1月前
|
Linux 编译器 vr&ar
【Linux】—— 详解动态库和静态库
【Linux】—— 详解动态库和静态库
145 0