使用 Qt Creator 编译 Optix - 链接问题
Compiling Optix with Qt Creator - Linking Issues
我正在尝试使用 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 文件将 linked 到目标文件。因此 .ptx 文件被视为目标文件,Qt 给我语法错误。
所以总而言之,optix.CONFIG += no_link
给出了未定义的引用,如果没有这一行,编译器会尝试 link .ptx 文件和 returns 语法错误
/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 中有没有办法在 linking 步骤中只忽略某种类型的文件,或者我在其他地方有错误?
在这两种情况下,构建步骤都会生成正确的 .ptx 文件(与给定的 SDK 预编译示例相比)和 .o 文件。
提前致谢!
编辑:没关系,我自己想通了。错误已经告诉我,我错过了 link 一个额外的库。这就是我必须前进的原因:
LIBS += -lcuda -lcudart -loptix -loptixu -lsutil -L/usr/local/cuda-6.5/lib64 -L/home/Remb/NVIDIA-OptiX-SDK-3.7.0-linux64/lib64
我自己想出来的,我忘记添加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
我正在尝试使用 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 文件将 linked 到目标文件。因此 .ptx 文件被视为目标文件,Qt 给我语法错误。
所以总而言之,optix.CONFIG += no_link
给出了未定义的引用,如果没有这一行,编译器会尝试 link .ptx 文件和 returns 语法错误
/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 中有没有办法在 linking 步骤中只忽略某种类型的文件,或者我在其他地方有错误? 在这两种情况下,构建步骤都会生成正确的 .ptx 文件(与给定的 SDK 预编译示例相比)和 .o 文件。
提前致谢!
编辑:没关系,我自己想通了。错误已经告诉我,我错过了 link 一个额外的库。这就是我必须前进的原因:
LIBS += -lcuda -lcudart -loptix -loptixu -lsutil -L/usr/local/cuda-6.5/lib64 -L/home/Remb/NVIDIA-OptiX-SDK-3.7.0-linux64/lib64
我自己想出来的,我忘记添加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