解决paddlepaddle框架问题:undefined symbol: _dl_sym, version GLIBC_PRIVATE

文章目录

    • 1、环境
        • 1.1、系统环境
      • 1.2、gcc版本
      • 1.3 paddle版本
    • 2、问题
    • 3、解决方法
      • 1、简单粗暴的用nvidia-docker/docker就OK了、不影响日常使用
      • 2、本机使用
        • 1、pull官方用来编译的docker镜像
        • 2、clone paddle源码
        • 3、创建container
        • 4、进行编译

这个问题源于之前日常把arch滚了一下,就发现无法import paddle,但是后面发现直接用docker来跑paddle就行了,好像没有造成什么影响,就一直搁置在这里。今天顺手解决了这个问题。

1、环境

1.1、系统环境

Linux shier 5.18.16-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 03 Aug 2022 11:25:04 +0000 x86_64 GNU/Linux

1.2、gcc版本

gcc (GCC) 12.1.1 20220730

1.3 paddle版本

paddle2.3

2、问题

解决paddlepaddle框架问题:undefined symbol: _dl_sym, version GLIBC_PRIVATE_第1张图片

官方github上的issue说是gcc版本问题,但是并不是。应该是Linux版本导致GLibC动态链接错误。
在本地编译一下GLibC就好了。(具体的解决方法下文会说)

3、解决方法

1、简单粗暴的用nvidia-docker/docker就OK了、不影响日常使用

# archlinux
1、安装
paru -S docker
paru -S nvidia-docker (新版本的docker好像支持直接调用gpu了、Docker 19.03及以上就行)
2、pull官方镜像
nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.3.1-gpu-cuda11.2-cudnn8
3、启动
nvidia-docker run --name paddle -it -v $PWD:/paddle registry.baidubce.com/paddlepaddle/paddle:2.3.1-gpu-cuda11.2-cudnn8 /bin/bash

更加具体安装可以直接去paddlepaddle官网上看链接

2、本机使用

在docker中跑就是不太方便调试,毕竟没有ide好用

需要对paddle进行编译(我是这么解决的,不知道还有其他方法没有,欢迎提出检测)

*本机CUDA版本为11.7,其他版本只给出命令,并未实测

1、pull官方用来编译的docker镜像

docker pull paddlepaddle/paddle:latest-dev-cuda11.6.2-cudnn8.4.0-gcc82 ## CUDA11.6

其他版本可自行去DockerHub上找对应的就好了链接,没法科学上网的去百度提供的镜像也行

2、clone paddle源码

git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle

3、创建container

# 记得前面要先进入paddle目录
nvidia-docker run --name paddle-test -v $PWD:/paddle --network=host -it paddlepaddle/paddle:latest-dev-cuda11.6.2-cudnn8.4.0-gcc82 /bin/bash
# 注意把镜像换成自己的

4、进行编译

cd /paddle
# 这里想安装release版本的paddlepaddle可以切换一下分支
git checkout release/2.3
mkdir build
cd build
cmake .. -DPY_VERSION=3.8 -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
#注意把python版本换成自己需要的版本
make -j$(nproc)

百度提供的镜像中已经安装好了python2.7、3.6、3.6m、3.7、3.7m、3.8、3.9版本,可以直接使用

如需要python3.10:

apt install python3.10-dev
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
# 然后在安装编译需要的protobuf就OK了
pip3.10 install protobuf

# 开始编译
cmake .. -DPY_VERSION=3.10 -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

建议在官方镜像中进行编译
如需本机编译,链接

本贴写于2022年8月18日,完,未经本人允许禁止转载

你可能感兴趣的:(linux,paddlepaddle,docker,人工智能)