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
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
89 0
|
1月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
82 1
Linux C/C++之IO多路复用(aio)
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
274 3
|
1月前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
29 0
Linux C/C++之线程基础
|
1月前
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
24 0
Linux C/C++之IO多路复用(poll,epoll)
|
1月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
36 0
Linux C/C++之TCP / UDP通信
|
1月前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
30 0
Linux c/c++之IPC进程间通信
|
1月前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
26 0
Linux c/c++进程间通信(1)
|
1月前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
34 0
Linux c/c++之进程的创建
|
1月前
|
Linux C++
Linux c/c++进程之僵尸进程和守护进程
这篇文章介绍了Linux系统中僵尸进程和守护进程的概念、产生原因、解决方法以及如何创建守护进程。
21 0