我一直在尝试链接到 NVIDIA 发布的 GPU Computing SDK 的 cutil.h 中的函数。
目前,我只是想编译这段简单的代码:
#include <iostream>
#include <cuda.h>
#include <cutil.h>
using namespace std;
int main(){
unsigned int time_total;
cutCreateTimer(&time_total);
return 0;
}
使用以下命令:
nvcc -I/home/sj755/NVIDIA_GPU_Computing_SDK/C/common/inc/ -L/home/sj755/NVIDIA_GPU_Computing_SDK/C/lib/libcutil_x86_64.a cutiltest.cu
只得到以下错误:
/tmp/tmpxft_000077cc_00000000-13_cutiltest.o: In function `main':
tmpxft_000077cc_00000000-1_cutiltest.cudafe1.cpp:(.text+0x10): undefined reference to
`cutCreateTimer'
collect2: ld returned 1 exit status
如果我要添加标志,ld 也找不到 -lcutil。我应该链接到一个静态库,但由于某种原因,这永远不会奏效。这是我尝试过的:
我已经更改了我的 .bashrc 文件,以便 LD_LIBRARY_PATH 包含静态库的路径
##########< CULA >导出 CULA_ROOT=/usr/local/cula
出口 CULA_INC_PATH=$CULA_ROOT/包括
导出 CULA_BIN_PATH_32=$CULA_ROOT/bin
导出 CULA_BIN_PATH_64=$CULA_ROOT/bin64
导出 CULA_LIB_PATH_32=$CULA_ROOT/lib
导出 CULA_LIB_PATH_64=$CULA_ROOT/lib64
##########< CUDA >导出 PATH=$PATH:/usr/local/cuda/bin
导出 LD_LIBRARY_PATH=:/usr/local/cuda/lib64
导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CULA_LIB_PATH_64
导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/libnvvp/
导出 CUDA_SDK_ROOT_DIR=/home/sj755/NVIDIA_GPU_Computing_SDK/C
导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_SDK_ROOT_DIR/lib
我也试过重命名
libcutil_x86_64.a
为libcutil.a
,仍然没有。尝试提取存档,创建共享对象文件并链接到它:
ar -x libcutil_x86_64.a
gcc -I /usr/include/GL/ -L /usr/include/GL/ -lglut -lGL -lGLU -lX11 -lXmu -lXi -lm -lpthread -shared *.cpp.o -o libcutil.so
nvcc -lcutil -I /home/sj755/NVIDIA_GPU_Computing_SDK/C/common/inc/ -L /home/sj755/NVIDIA_GPU_Computing_SDK/C/lib/libcutil.so cutiltest.cu
只为得到以下/usr/bin/ld: cannot find -lcutil
我在这里忘记了哪一步?