请教linux下如何编译QT+CUDA

pimeson 2011-06-17 10:47:14
linux下,用qt完成界面,用cuda实现算法
联合编译时,出现问题,各位大牛帮帮忙
(redhat 5.2/gcc 4.1.2/cuda 4.0/qt 3.3.6/64位机/Quadro FX5800)

我的方法是:
将.cu文件和.cpp文件都加入到pro,qmake生成Makefile文件
修改Makefile文件,将编译.cu文件的地方改为
nvcc -c -o .obj/kkwave.o kkwave.cu
保存后make,出现链接错误:
/usr/bin/ld: .obj/kkwave.o: relocation R_X86_64_32 against 'a local symbol' can not be used when making a shared object; recompile with -fPIC
.obj/kkwave.o:could not read symbols:Bad value
collect2:ld returned 1 exit status

看提示貌似跟机器位数、共享库有关,但是我编译.cu文件时,增加-shared -m64都没有用
提示建议用-fPIC,但-fPIC是gcc的参数,不是nvcc的

请问这个错误怎么解决?
qt+cuda+linux有什么比较标准的编译方法?

谢了先
...全文
1786 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc19851 2012-08-09
  • 打赏
  • 举报
回复
链接你用的qmake吧,加上cuda的库,cudart
GeoAnt 2012-08-04
  • 打赏
  • 举报
回复
完成上面的修改后, make 即可
GeoAnt 2012-08-04
  • 打赏
  • 举报
回复
之前我做过
修改QT生成的MAKEFILE
添加: .cu文件用 nvcc 编译 如:nvcc test.cu -o test.o
添加: 把test.o 加入到object 中
添加:link 改成 nvcc
注: 头文件test.h 添加到相应用C++编译的文件中时, 不能含有cuda 函数, 否则 无法识别

如果不明白,可以先查查C++ 中编译链接是什么意思
alpha.5 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

自己结贴吧
修改Makefile文件为
nvcc -c -Xcompiler -fPIC即可编译过
[/Quote]

同问,楼主你是怎么解决的,谢谢了
—— alpha618@yahoo.cn
hhshiyi 2011-06-21
  • 打赏
  • 举报
回复
老哥,留个联系方式!
我的邮箱:hhshiyi@163.com
pimeson 2011-06-20
  • 打赏
  • 举报
回复
自己结贴吧
修改Makefile文件为
nvcc -c -Xcompiler -fPIC即可编译过

374

社区成员

发帖
与我相关
我的任务
社区描述
CUDA on Linux
社区管理员
  • CUDA on Linux社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧