Qt linux Cuda 错误

报错误:relocation R_x86_64_PC32 against symbol '_ZaddKernelPkfs0_iPf' can not be uused when making ashared objet : recompili with -fPIC

解决方法:

NVCCFLAGS += -xCompiler -fPIC

cuda.commands= nvcc $$NVCCFLAGS  $$NVCCOPTIONS $$CUDA_INC $$CUDA_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} 2>&1 | sed -r \"s/\\(([0-9]+)\\)/:\\1/g\" 1>&2

整体的编译配置内容:

CUDA_DIR = $(QTDIR) #QTDIR为环境变量,为了使QtCreator 正常读取环境变量,使用qtcreator.sh启动
CUDA_LIBS = -lcudart  

INCLUDEPATH  += $$CUDA_DIR/include
QMAKE_LIBDIR += $$CUDA_DIR/lib64
LIBS += $$CUDA_LIBS

CUDA_SOURCES += HelloCuda.cu

#CUDA编译器配置                   
#GPU架构
SYSTEM_TYPE = 64
CUDA_ARCH = sm_61
NVCCOPTIONS = -use_fast_math -O2

#调试模式下,-g 表示将CPU代码(host)编译成可调式版本,-G表示将GPU代码(kernel)编译成可调式版本。
debug{
    NVCCOPTIONS += -g -G
}

CUDA_INC = $$join(INCLUDEPATH,' -I','-I',' ')

NVCCFLAGS += -xCompiler -fPIC

cuda.input = CUDA_SOURCES
cuda.output = ${OBJECTS_DIR}${QMAKE_FILE_BASE}_cuda.o
cuda.commands = $$CUDA_DIR/bin/nvcc $$NVCCFLAGS  $$NVCCOPTIONS $$CUDA_INC $$CUDA_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} 2>&1 | sed -r \"s/\\(([0-9]+)\\)/:\\1/g\" 1>&2
cuda.dependency_type = TYPE_C

QMAKE_EXTRA_COMPILERS += cuda

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值