我想編譯this volume rendering project。我安裝我的Ubuntu 10.10機器上的CUDA工具包和SDK,並已能夠運行的例子,但我得到這個:故障編譯cuda代碼
[email protected]:~/vfray$ make
make -f MakefileCPU
make[1]: Entering directory `/home/antonio/vfray'
make[1]: `vfRayCPU' is up to date.
make[1]: Leaving directory `/home/antonio/vfray'
make -f MakefileCUDA
make[1]: Entering directory `/home/antonio/vfray'
nvcc -o vfRay.cu_o -c vfRay.cu --ptxas-options=-v --compiler-bindir=/usr/bin/gcc-4.3 --compiler-options -fno-strict-aliasing -I. -I/usr/local/cuda/include -I/usr/local/cuda/SDK/C/common/inc -DUNIX -O3
/usr/bin/gcc-4.3: No such file or directory
make[1]: *** [vfRay.cu_o] Error 1
make[1]: Leaving directory `/home/antonio/vfray'
make: *** [cuda] Error 2
我怎樣才能解決這個問題?
編輯:運行由talonmies在vfRay.cu文件中描述的步驟時,我得到:
[email protected]:~/vfray$ nvcc --compiler-bindir=./jdir -arch=sm_20 -c -Xptxas="-v" vfRay.cu
vfRay.cu:25: fatal error: cutil.h: No such file or directory
compilation terminated.
新編輯:好了,在做-L到包括cutil。 h目錄我得到了vfRay.cu和vfRayKernel.cu的這個。
[email protected]:~/vfray$ nvcc --compiler-bindir=./jdir -arch=sm_20 -c -Xptxas="-v" vfRay.cu -I/home/antonio/NVIDIA_GPU_Computing_SDK/C/common/inc/
vfRay.cu:48: fatal error: vfRayKernel.cu: No such file or directory
compilation terminated.
[email protected]:~/vfray$ nvcc --compiler-bindir=./jdir -arch=sm_20 -c -Xptxas="-v" vfRayKernel.cu -I/home/antonio/NVIDIA_GPU_Computing_SDK/C/common/inc/
vfRayKernel.cu(80): error: identifier "BLOCK_SIZE" is undefined
vfRayKernel.cu(181): error: identifier "BLOCK_SIZE" is undefined
vfRayKernel.cu(262): error: identifier "BLOCK_SIZE" is undefined
3 errors detected in the compilation of "/tmp/tmpxft_000064a5_00000000-4_vfRayKernel.cpp1.ii".
我認爲這是一個makefile問題,我懷疑這個編譯會在沒有修改的情況下工作。
這是生成文件的項目:
#
# Makefile CPU/CUDA
#
#-----------------------------------------------------------------------------
all: cpu cuda
cpu: MakefileCPU
make -f MakefileCPU
cuda: MakefileCUDA
make -f MakefileCUDA
clean:
make -f MakefileCPU clean
make -f MakefileCUDA clean
我做這個mod,而不是工作:
all: cpu cuda
cpu: MakefileCPU
make -f MakefileCPU
cuda: MakefileCUDA
make -f MakefileCUDA
nvcc --compiler-bindir=./jdir -arch=sm_20 -c -Xptxas="-v"
clean:
make -f MakefileCPU clean
make -f MakefileCUDA clean
編輯:我修改了common.mk文件,以便線93分gcc 4.4,現在我得到cutil丟失的錯誤。我可以在哪裏修改它?我嘗試將它放在usr/bin的ld文件夾中,但ld是一個程序,我無法刪除它。
安東尼@安東尼奧 - 桌面:〜/ vfray $使
make -f MakefileCPU
make[1]: Entering directory `/home/antonio/vfray'
make[1]: `vfRayCPU' is up to date.
make[1]: Leaving directory `/home/antonio/vfray'
make -f MakefileCUDA
make[1]: Entering directory `/home/antonio/vfray'
g++ -fPIC -o .///vfRay .///vfRayPreComp.o .///vfRay.cu_o -L/usr/local/cuda/lib64 -L/usr/local/cuda/SDK/C/lib -L/usr/local/cuda/SDK/C/common/lib -lcudart -lGL -lGLU -lglut -L/usr/local/cuda/lib64 -L/usr/local/cuda/SDK/C/lib -L/usr/local/cuda/SDK/C/common/lib -lcutil
/usr/bin/ld: cannot find -lcutil
collect2: ld returned 1 exit status
make[1]: *** [vfRay] Error 1
make[1]: Leaving directory `/home/antonio/vfray'
make: *** [cuda] Error 2
指定導入路徑的選項是庫的'-I'和'-L'。 – talonmies
仍然無法使用,請閱讀編輯。我相信這隻有在makefile被修改之後纔會起作用。 – andandandand
只需使用我在答案中提供的「--compiler-bindir」選項修改makefile即可。你做這件事比它需要的複雜得多10倍。沒有你問到的東西現在跟你的原始問題有什麼關係...... – talonmies