使用qmake使用nvcc和gcc编译CUDA代码时“无法识别文件格式”

时间:2016-02-03 10:38:35

标签: c++ qt gcc cuda nvcc

我必须在我的项目中关注两个文件:

home/cuda_compilation_test/
    main.cpp
    libcudatest.cu
    cuda_compilation_test.pro

我正在使用QtCreator和qmake进行编译。但是,当我使用下面显示的项目文件构建项目时,我收到链接错误文件格式无法识别;作为链接描述文件处理。 尽管如此,它仍然在调试目录中生成两个目标文件

home/build-cuda_compilation_test-Desktop-Debug/
    main.o
    libcudatest.o

我怎么能

  1. 检查,确实正确生成了目标文件并且
  2. 在主项目中包含单独编译的libcudatest.o
  3. 进一步参考,这是编译器输出

    g++ -m64 -o cuda_compilation_test_2 libcudatest.o main.o    -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64 -lcudart -lcudatest -lQtGui -lQtCore -lpthread 
    /usr/bin/ld:libcudatest.o: file format not recognized; treating as linker script
    /usr/bin/ld:libcudatest.o:1: syntax error
    collect2: error: ld returned 1 exit status
    make: *** [cuda_compilation_test_2] Error 1
    11:19:20: The process "/usr/bin/make" exited with code 2.
    

    和项目文件:

    TEMPLATE =
    
    # Files
    SOURCES += main.cpp
    
    OTHER_FILES += libcudatest.cu
    
    LIBS += -L/usr/local/cuda/lib64
    LIBS += -lcudart -lcudatest
    
    # CUDA path
    CUDA_DIR = /usr/local/cuda
    CUDA_CC = $$CUDA_DIR/bin/nvcc
    
    # CUDA Setup
    CUDA_SOURCES  = libcudatest.cu
    NVCCINCLUDES +=
    NVCCFLAGS     = --shared -arch sm_35 -Xcompiler -fPIC --ptxas-options=-v
    INCLUDEPATH  +=
    LIBS         +=
    
    
    # Configuration of the Cuda compiler
    # http://doc.qt.io/qt-4.8/qmake-environment-reference.html#customizing
    CONFIG(debug, debug|release) {
        # Debug mode
        cuda_d.input = CUDA_SOURCES
        cuda_d.output = ${QMAKE_FILE_BASE}.o
        cuda_d.commands = $$CUDA_CC -D_DEBUG $$NVCCFLAGS $$NVCCINCLUDES $$LIBS -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
        cuda_d.dependency_type = TYPE_C
        QMAKE_EXTRA_COMPILERS += cuda_d
    }
    else {
    # Release mode
        cuda.input = CUDA_SOURCES
        cuda.output = ${QMAKE_FILE_BASE}.o
        cuda.commands = $$CUDA_CC $$NVCCFLAGS $$NVCCINCLUDES $$LIBS -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
        cuda.dependency_type = TYPE_C
        QMAKE_EXTRA_COMPILERS += cuda
    }
    

    我正在尝试在linux上编译。

    非常感谢您对此主题的任何帮助。

0 个答案:

没有答案