Gcc GPU计算SDK中cutil的链接

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

我一直在尝试链接到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;
}
仅获取以下错误:

/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\u BIN\u路径\u 32=$CULA\u根/BIN

    导出CULA\u BIN\u路径\u 64=$CULA\u根/bin64

    导出CULA\u LIB\u路径\u 32=$CULA\u根/LIB

    导出CULA_LIB_PATH_64=$CULA_ROOT/lib64

    ########## 导出路径=$PATH:/usr/local/cuda/bin

    导出LD_LIBRARY_PATH=:/usr/local/cuda/lib64

    导出LD_库路径=$LD_库路径:$CULA_LIB_路径64

    导出LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/libnvp/

    导出CUDA_SDK_ROOT_DIR=/home/sj755/NVIDIA_GPU_Computing_SDK/C

    导出LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_SDK_ROOT_DIR/lib

  • 我还尝试将
    libcutil\u x86\u 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/libcutil.so cutiltest.cu

  • 仅获取以下
    /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版本的一致性(甚至不存在)。

    它工作!!!谢谢我应该告诉你,我不是把它当作一种选择。我正在与一家出于某种原因使用它的第三方图书馆合作。我别无选择,只能使用它。它很有效!!!谢谢我应该告诉你,我不是把它当作一种选择。我正在与一家出于某种原因使用它的第三方图书馆合作。我别无选择,只能使用它。