Environment Cookbook
About 1242 wordsAbout 4 min
2025-02-24
蜜汁环境:我到底在使用哪里的动态链接库?
重要的指令
ldd [file]:查看文件的动态链接库依赖,这既能用在可执行文件,也能用在.so上ldconfig -p | grep [name]:查看动态链接库的路径env | sort:查看环境变量which [command]:查看命令的路径
重要的环境变量
1. 全局环境
PATH:命令搜索路径LD_LIBRARY_PATH:动态链接库的搜索路径CONDA_PREFIX:conda 环境的根目录
2. CUDA 相关
CUDA_HOME:CUDA 安装目录CUDNN_INCLUDE_DIR:cuDNN 头文件目录CUDNN_LIB_DIR:cuDNN 库文件目录
3. C编译相关
CC:C 编译器路径CXX:C++ 编译器路径 链接库和编译指令:CFLAGS:C 编译标志,即编译器参数CXXFLAGS:C++ 编译标志LDFLAGS:链接器标志
4. 其他见附录
建议配置
# export PATH=$CONDA_PREFIX/bin:$PATH 这一行由conda自动配置
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
export CFLAGS="-I$CONDA_PREFIX/include"CUDA和PyTorch的经典版本
还是原来的配方,还是熟悉的味道
注意事项:
- 终端中输入
nvidia-smi时,显示的是当前驱动版本,以及兼容的最高 CUDA 版本。这不代表系统安装了CUDA与否,只是显卡驱动支持的最高版本。 - CUDA的动态链接库一般在
/usr/local/cuda/lib64目录下,可以通过ldconfig -p | grep cuda查看。 - 安装了CUDA不代表安装了nvcc,还是需要安装CUDA Toolkit。
- 动态链接库的cuda版本、nvcc的版本、CUDA Toolkit的版本必须保持一致。
- 缺少头文件一般是因为没有安装对应的dev版本的库,比如
libcusparse-dev、libcusolver-dev等。 - 动态链接库找不到,多半是
LD_LIBRARY_PATH没有配置好 - 编译器找不到,多半是
CC、CXX没有配置好(或使用update-alternatives) - 编译参数不对,多半是
CFLAGS、CXXFLAGS没有配置好 - 链接器参数不对,多半是
LDFLAGS没有配置好
经典版本 py3.8+cu116+torch1.13
cuda-toolkit 全家桶
conda create -n py38cu116 python=3.8
conda install -c conda-forge ffmpeg git ninja glib make cmake
conda install gcc_linux-64=10 gxx_linux-64=10 libstdcxx-ng -c conda-forge
conda install \
nvidia/label/cuda-11.6.0::cuda-toolkit \
libcusparse-dev \
libcusolver-dev \
--override-channels \
-c nvidia/label/cuda-11.6.0
CONDA_CHANNEL_PRIORITY=flexible conda install cudnn=8.3.2
# tweak mkl
# see https://github.com/pytorch/pytorch/issues/123097
conda install \
pytorch==1.13.1 \
torchvision==0.14.1 \
torchaudio==0.13.1 \
pytorch-cuda=11.6 \
mkl==2024.0.0 \
-c pytorch \
-c nvidia
# tweak for minkovskiEngine
conda install \
pip==22.0 \
numpy==1.20.*openmmlab
export CUDA_HOME=$CONDA_PREFIX
export CUDA_PATH=$CUDA_HOME
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.13/index.html
pip install \
mmengine==0.9.0 \
mmdet==3.3.0 \
mmsegmentation==1.2.0 \
mmdet3d==1.4.0 \
mmpretrain==1.2.0
pip install torch-scatter==2.1.2 -f https://data.pyg.org/whl/torch-1.13.0+cu116.html
pip install ccimport cumm-cu116 importlib_metadata lark pccm pybind11 spconv-cu116MinkovskiEngine
export CC=$CONDA_PREFIX/bin/gcc
export CXX=$CONDA_PREFIX/bin/g++
export CFLAGS="-I$CONDA_PREFIX/include"
export CXXFLAGS="-I$CONDA_PREFIX/include"
export LDFLAGS="-L$CONDA_PREFIX/lib"
conda install openblas-devel -c anaconda
pip install -U git+https://github.com/NVIDIA/MinkowskiEngine -v --no-deps --install-option="--blas=openblas"船新版本 py3.10+cu122+torch2.4
(按需更新)
超级新版 py3.12+cu128+torch2.5
(按需更新)
用conda安装其他各种库
OpenCV
Boost
CMake
Glibc
(按需更新)
附录
CONDA_BACKUP_RANLIB:ranlib工具路径CONDA_BACKUP_CXX_FOR_BUILD: C++ 编译器路径(用于构建)CONDA_BACKUP_OBJCOPY:objcopy工具路径CONDA_BACKUP_AR:ar工具路径CONDA_BACKUP_AS:as工具路径CONDA_BACKUP_DEBUG_CXXFLAGS:调试模式下的 C++ 编译标志CONDA_BACKUP_host_alias:主机别名(x86_64-conda-linux-gnu)CONDA_BACKUP_DEBUG_CFLAGS:调试模式下的 C 编译标志CONDA_BACKUP_CC: C 编译器路径CONDA_BACKUP_CFLAGS:C 编译标志CONDA_BACKUP_CPPFLAGS:C 预处理器标志CONDA_BACKUP_CPP: C 预处理器路径CONDA_BACKUP_CXXFILT:c++filt工具路径CONDA_BACKUP_CXXFLAGS:C++ 编译标志CONDA_BACKUP_CXX: C++ 编译器路径CONDA_BACKUP_LDFLAGS:链接器标志CONDA_BACKUP_LD:链接器路径CONDA_BACKUP_LD_GOLD:ld.gold工具路径CONDA_BACKUP_NM:nm工具路径CONDA_BACKUP_OBJCOPY:objcopy工具路径CONDA_BACKUP_OBJDUMP:objdump工具路径CONDA_BACKUP_RANLIB:ranlib工具路径CONDA_BACKUP_READELF:readelf工具路径CONDA_BACKUP_SIZE:size工具路径CONDA_BACKUP_STRINGS:strings工具路径CONDA_BACKUP_STRIP:strip工具路径CONDA_BACKUP_GCC_AR:gcc-ar工具路径CONDA_BACKUP_GCC:gcc编译器路径CONDA_BACKUP_GCC_NM:gcc-nm工具路径CONDA_BACKUP_GCC_RANLIB:gcc-ranlib工具路径CONDA_BACKUP_GPROF:gprof工具路径CONDA_BACKUP_GXX:g++编译器路径CONDA_BACKUP_ELFEDIT:elfedit工具路径CONDA_BACKUP_BUILD:构建系统别名(x86_64-conda-linux-gnu)CONDA_BACKUP_build_alias:构建系统别名(x86_64-conda-linux-gnu)CONDA_BACKUP_CMAKE_PREFIX_PATH:CMake 前缀路径CONDA_BACKUP_CONDA_BUILD_SYSROOT:conda 构建系统的根目录CONDA_BACKUP__CONDA_PYTHON_SYSCONFIGDATA_NAME:Python 系统配置数据名称CONDA_BACKUP_CPPFLAGS:C 预处理器标志CONDA_BACKUP_DEBUG_CFLAGS:调试模式下的 C 编译标志CONDA_BACKUP_DEBUG_CPPFLAGS:调试模式下的 C 预处理器标志CONDA_BACKUP_DEBUG_CXXFLAGS:调试模式下的 C++ 编译标志CONDA_BACKUP_ELFEDIT:elfedit工具路径CONDA_BACKUP_GCC_AR:gcc-ar工具路径CONDA_BACKUP_GCC:gcc编译器路径CONDA_BACKUP_GCC_NM:gcc-nm工具路径CONDA_BACKUP_GCC_RANLIB:gcc-ranlib工具路径CONDA_BACKUP_GPROF:gprof工具路径CONDA_BACKUP_GXX:g++编译器路径CONDA_BACKUP_ELFEDIT:elfedit工具路径CONDA_BACKUP_BUILD:构建系统别名(x86_64-conda-linux-gnu)CONDA_BACKUP_build_alias:构建系统别名(x86_64-conda-linux-gnu)CONDA_BACKUP_CMAKE_PREFIX_PATH:CMake 前缀路径CONDA_BACKUP_CONDA_BUILD_SYSROOT:conda 构建系统的根目录CONDA_BACKUP__CONDA_PYTHON_SYSCONFIGDATA_NAME:Python 系统配置数据名称CONDA_BACKUP_CPPFLAGS:C 预处理器标志CONDA_BACKUP_DEBUG_CFLAGS:调试模式下的 C 编译标志CONDA_BACKUP_DEBUG_CPPFLAGS:调试模式下的 C 预处理器标志CONDA_BACKUP_DEBUG_CXXFLAGS:调试模式下的 C++ 编译标志CONDA_BACKUP_ELFEDIT:elfedit工具路径CONDA_BACKUP_GCC_AR:gcc-ar工具路径CONDA_BACKUP_GCC:gcc编译器路径CONDA_BACKUP_GCC_NM:gcc-nm工具路径CONDA_BACKUP_GCC_RANLIB:gcc-ranlib工具路径CONDA_BACKUP_GPROF:gprof工具路径CONDA_BACKUP_GXX:g++编译器路径