【发布时间】:2012-05-31 16:05:25
【问题描述】:
我一直在尝试链接到英伟达发布的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_ROOT=/usr/local/cula
导出 CULA_INC_PATH=$CULA_ROOT/include
导出 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
##########导出 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
我在这里忘记了哪一步?
【问题讨论】:
标签: gcc compilation cuda nvcc