线程池 | Linux平台编译线程池动态库

环境:ubuntu24.04

1.编译

image-20250116151858540

1
g++ -fPIC -shared threadPool.cpp -o libtdpool.so -std=c++17

g++版本至少要在5.5以上才可以

image-20250116152534150

1
2
3
4
5
6
7
8
9
10
一般程序在
/usr/lib
/usr/local/lib

找.a静态库和.so动态库的


/usr/include
/usr/local/include
找*.h头文件的

所以要把.so放入对应位置

1
2
sudo mv libtdpool.so /usr/local/lib
sudo mv threadpool.h /usr/local/include

删除threadPool.cpp

image-20250116152946133

1
g++ 测试.cpp -std=c++17 -ltdpool

2.运行

1
./a.out

发现不能直接运行有报错。

原因:

运行时的动态库目录和编译时不一样的

1
cd /etc/ld.so.conf.d
1
sudo vim mylib.conf

image-20250116154015258

将动态库目录写入mylib.conf

1
/usr/local/lib

返回原来工作目录,执行

1
sudo ldconfig

刷新conf配置文件后执行可执行文件

1
./a.out

image-20250116154553336

发现可以运行了。