Gcc GPU计算SDK中cutil的链接
我一直在尝试链接到NVIDIA发布的GPU计算SDK的cutil.h中的函数 目前,我只是试图编译这段简单的代码:Gcc GPU计算SDK中cutil的链接,gcc,compilation,cuda,nvcc,Gcc,Compilation,Cuda,Nvcc,我一直在尝试链接到NVIDIA发布的GPU计算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
#include <iostream>
#include <cuda.h>
#include <cutil.h>
using namespace std;
int main(){
unsigned int time_total;
cutCreateTimer(&time_total);
return 0;
}
仅获取以下错误:
/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。
我应该链接到一个静态库,但由于某种原因,这永远不会成功。以下是我尝试过的:
libcutil\u x86\u 64.a
重命名为libcutil.a
,但仍然没有任何结果/usr/bin/ld:找不到-lcutil
我忘了哪一步了?这不仅仅是你的问题。您是否尝试将cutil链接为共享库?此解决方案已发布在上,这不仅仅是您的问题。您是否尝试将cutil链接为共享库?此解决方案发布在上。您的编译声明不正确。它应该是这样的:
nvcc -I$SDKROOT/C/common/inc -L$SDKROOT/C/lib cutiltest.cc -lcutil_x86_64
其中,SDKROOT保存指向SDK的根路径,该路径看起来是
/home/sj755/NVIDIA_GPU_Computing_SDK
就你而言。这里需要注意的关键是,库必须在代码和需要它的对象之后按名称作为-l
选项传递。使用您的代码片段在OS X上的一个具体示例:
$ cat cutiltest.cc
#include <iostream>
#include <cuda.h>
#include <cutil.h>
using namespace std;
int main(){
unsigned int time_total;
cutCreateTimer(&time_total);
return 0;
}
$ nvcc -I/Developer/GPU\ Computing/C/common/inc -L /Developer/GPU\ Computing/C/lib -o cutiltest cutiltest.cc -lcutil_i386
$ ls -l cutiltest
-rwxr-xr-x 1 talonmies talonmies 117548 May 25 07:57 cutiltest
$cat cutiltest.cc
#包括
#包括
#包括
使用名称空间std;
int main(){
无符号整数时间总和;
cutCreateTimer(&总时间);
返回0;
}
$nvcc-I/Developer/GPU\Computing/C/common/inc-L/Developer/GPU\Computing/C/lib-o cutiltest cutiltest.cc-lcutil_i386
$ls-l cutiltest
-rwxr-xr-x 1 talonmies talonmies 117548 5月25日07:57 cutiltest
但作为最后一句话,您真的应该重新考虑使用SDK cutils库的选择。它仅用于SDK示例。它不是CUDA的一部分,它没有文档,不保证工作或不包含bug,也不保证从一个SDK版本到另一个SDK版本的一致性(甚至不存在)。您的编译语句不正确。它应该是这样的:
nvcc -I$SDKROOT/C/common/inc -L$SDKROOT/C/lib cutiltest.cc -lcutil_x86_64
其中,SDKROOT保存指向SDK的根路径,该路径看起来是
/home/sj755/NVIDIA_GPU_Computing_SDK
就你而言。这里需要注意的关键是,库必须在代码和需要它的对象之后按名称作为-l
选项传递。使用您的代码片段在OS X上的一个具体示例:
$ cat cutiltest.cc
#include <iostream>
#include <cuda.h>
#include <cutil.h>
using namespace std;
int main(){
unsigned int time_total;
cutCreateTimer(&time_total);
return 0;
}
$ nvcc -I/Developer/GPU\ Computing/C/common/inc -L /Developer/GPU\ Computing/C/lib -o cutiltest cutiltest.cc -lcutil_i386
$ ls -l cutiltest
-rwxr-xr-x 1 talonmies talonmies 117548 May 25 07:57 cutiltest
$cat cutiltest.cc
#包括
#包括
#包括
使用名称空间std;
int main(){
无符号整数时间总和;
cutCreateTimer(&总时间);
返回0;
}
$nvcc-I/Developer/GPU\Computing/C/common/inc-L/Developer/GPU\Computing/C/lib-o cutiltest cutiltest.cc-lcutil_i386
$ls-l cutiltest
-rwxr-xr-x 1 talonmies talonmies 117548 5月25日07:57 cutiltest
但作为最后一句话,您真的应该重新考虑使用SDK cutils库的选择。它仅用于SDK示例。它不是CUDA的一部分,它没有文档,不保证工作或不包含bug,也不保证从一个SDK版本到另一个SDK版本的一致性(甚至不存在)。它工作!!!谢谢我应该告诉你,我不是把它当作一种选择。我正在与一家出于某种原因使用它的第三方图书馆合作。我别无选择,只能使用它。它很有效!!!谢谢我应该告诉你,我不是把它当作一种选择。我正在与一家出于某种原因使用它的第三方图书馆合作。我别无选择,只能使用它。