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-cu116
MinkovskiEngine
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++
编译器路径