使用Qt Creator编译Optix - 链接问题

时间:2015-03-03 13:33:27

标签: c++ qt cuda nvidia optix

我正在尝试使用Qt-Creator编译Nvidia OptiX SDK提供的一些示例项目。

我编写了.pro文件并使用此帮助Compiling Optix with Qt Creator!

根据自己的需要对其进行了编辑

我有完全相同的.pro文件,除了我编辑了CUDA和OptiX的方向,但我无法完全编译,因为(小片段但所有错误都有相同的原因)

/home/Rembold/QTProjects/build-HelloOptix-Desktop-Debug/../HelloOptix/sample1.c:90: undefined reference to `sutilHandleError'
/home/Rembold/QTProjects/build-HelloOptix-Desktop-Debug/../HelloOptix/sample1.c:91: undefined reference to `sutilHandleError'

可能源于NVIDIA-OptiX-SDK-X.X.X-linux64/SDK/sutil

但是如果我注释掉行optix.CONFIG += no_link,则.cu文件中生成的.ptx文件将链接到目标文件。因此.ptx文件被视为目标文件,Qt给我语法错误。

总而言之,optix.CONFIG += no_link给出了未定义的引用,如果没有这一行,编译器会尝试链接.ptx文件并返回语法错误

/usr/bin/ld:ptx/draw_color.cu.ptx: file format not recognized; treating as linker script
/usr/bin/ld:ptx/draw_color.cu.ptx:2: syntax error

在Qt中有没有办法在链接步骤中忽略某种类型的文件,或者我在其他地方有错误? 在这两种情况下,构建步骤都会生成正确的.ptx文件(与给定的SDK预编译样本相比)和.o文件。

提前致谢!

编辑:没关系,我自己想通了。错误已经告诉我,我错过了链接额外的图书馆。这就是我必须前进的原因:

LIBS += -lcuda -lcudart -loptix -loptixu -lsutil -L/usr/local/cuda-6.5/lib64 -L/home/Remb/NVIDIA-OptiX-SDK-3.7.0-linux64/lib64

1 个答案:

答案 0 :(得分:2)

我自己想通了,我忘了添加OptiX的sutils库。 以下是我添加到LIBS中的内容:

LIBS += -lcuda -lcudart -loptix -loptixu -lsutil -L/usr/local/cuda-6.5/lib64 -L/home/Remb/NVIDIA-OptiX-SDK-3.7.0-linux64/lib64