我正在尝试用Qt-Creator编译来自Nvidia OptiX SDK的一些示例项目。
我编写了.pro文件并根据自己的需要使用这个帮助用Qt Creator编译Optix!编辑了它
我有完全相同的.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 errorQt中是否有一种方法可以在链接步骤中忽略某个类型的文件,还是我在其他地方出错了?在这两种情况下,构建步骤都生成正确的.ptx文件(与给定的SDK-预编译-样例相比)和一个.o文件。
提前感谢!
编辑:从来没有想过我是自己想出来的。错误已经告诉我,我错过了链接一个额外的libary。这就是为什么我要提前:
LIBS += -lcuda -lcudart -loptix -loptixu -lsutil -L/usr/local/cuda-6.5/lib64 -L/home/Remb/NVIDIA-OptiX-SDK-3.7.0-linux64/lib64发布于 2015-03-05 00:30:04
我自己发现,我忘了添加OptiX的sutils库。以下是我在我的自由联盟中添加的内容:
LIBS += -lcuda -lcudart -loptix -loptixu -lsutil -L/usr/local/cuda-6.5/lib64 -L/home/Remb/NVIDIA-OptiX-SDK-3.7.0-linux64/lib64https://stackoverflow.com/questions/28833136
复制相似问题