原理
LD_PRELOAD
LD_PRELOAD是一个环境变量,它允许你定义一个或多个共享库(在 Linux 上是.so文件,在 macOS 上是.dylib文件)的路径,这些库会在任何其他库之前被加载到程序的地址空间中。当一个程序在 Unix/Linux 系统上启动时,动态链接器/加载器(通常是
ld.so)负责加载该程序所依赖的所有共享库。正常情况下,链接器会按照默认的搜索路径(如
/lib,/usr/lib)和规则来查找并加载库。如果设置了
LD_PRELOAD,链接器会首先加载LD_PRELOAD中指定的所有库。由于这些预加载的库中的符号(函数、变量等)先被加载,它们会“覆盖”后续加载的库中同名的符号。
在
LD_PRELOAD指定的库中定义已有库的同名函数,并在原库函数的基础上增加扩展功能,以此实现库函数劫持
CUDA构成
CUDA
重要头文件
cuda_runtime.h
cuda.h
CUDNN
cudnn_v9.h
CUBLAS
cublas.h
cublas_v2.h
头文件
cuda_runtime.h
cuda.h
cudnn.h
cublas.h
评论区