• PATH 与 LD_LIBRARY_PATH 的用法举例


    PATH 这个环境变量,从我大一就出现了,年少无知,“总有一天我会搞明白的”,这都5年过去了,5年!你知道我这5年是怎么过来的吗!!!

    有啥用呢? 大家直接查就行,我唯一能用到的地方就是 将某些可执行文件的路径添加到PATH
    举个例子

    我在参考了:
    1. ONNX-TensorRT安装教程https://zhuanlan.zhihu.com/p/380950900
    2. https://github.com/onnx/onnx-tensorrt

    在执行了以下代码块儿之后:

    cd onnx-tensorrt
    mkdir build && cd build
    cmake .. -DTENSORRT_ROOT=<path_to_trt> && make -j
    // Ensure that you update your LD_LIBRARY_PATH to pick up the location of the newly built library:
    export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5

    build 路径下会有一个可执行文件onnx2trt
    我在执行的时候,只能执行./onnx2trt,而不能在其他路径直接执行onnx2trt

    所以PATH 就起作用了:

    export PATH=$(pwd):$PATH
    
    • 1

    这样可以将onnx2trt的路径添加到PATH中,在任何路径都可执行onnx2trt,但是这样添加只是临时的,若想一直添加到PATH中,可以这样:

    echo "export PATH=$(pwd):$PATH" >> ~/.bashrc
    source ~/.bashrc # 刷新一下环境变量
    
    • 1
    • 2

    注意 echo 的字符串
    如果字符串中有变量,单引号会忽略,而双引号会把变量解析以后带入字符串

    另外还有个例子,CUDA安装完之后,我们会在 ~/.bashrc 尾处添加两行代码:

    export  PATH=/usr/local/cuda/bin:$PATH
    export  LD_LIBRARY_PATH=/usr/local/cuda/lib64$LD_LIBRARY_PATH
    
    • 1
    • 2

    之后执行nvcc -V 来看CUDA是否安装成功,而上边的第一行就是保证 nvcc 所在的路径可以直接搜索到,能直接执行 nvcc


    下边那行引出了 LD_LIBRARY_PATH

    LD_LIBRARY_PATH 的用法,如果不是开发者,而只是普通用户,一般用不上

    LD_LIBRARY_PATH 是 Linux/UNIX 系统中使用的环境变量。 它用于告诉动态链接加载器在哪里寻找特定应用程序的共享库.

    而上边编译完onnx2trt之后,有这样一行:

    export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
    
    • 1

    就是将当前路径添加到 LD_LIBRARY_PATH ,之后执行python setup.py install 便可以找到安装路径


    同样的,在编译 mmdeploy 中

    export LD_LIBRARY_PATH=$ONNXRUNTIME_DIR/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$TENSORRT_DIR/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$CUDNN_DIR/lib64:$LD_LIBRARY_PATH
    
    • 1
    • 2
    • 3

    将 onnxruntime tensorrt cudnn 的路径都添加到了 LD_LIBRARY_PATH
    为了一会儿编译 SDK 可以找到路径

    OK,就这样吧

  • 相关阅读:
    基于Docker和Springboot两种方式安装与部署Camunda流程引擎
    Qt开发思想探幽]QObject、模板继承和多继承
    第61章 Jquery JSON Table EntityFrameworkCore自动生成数据库
    【Android】画面卡顿优化列表流畅度六(终篇)
    学习gerrit笔记
    APK构建过程-命令行编译
    docker搭建MySQL主从复制
    金仓数据库KingbaseES客户端编程接口指南-JDBC(7. JDBC事务处理)
    QT 第五天 TCP通信与数据库
    【23真题】Easy!速成120两个月够了!
  • 原文地址:https://blog.csdn.net/HaoZiHuang/article/details/125487468