我將C++代碼轉換爲C,現在我試圖更改Makefile。我有這樣的:gcc鏈接不同的g ++
g++ -fPIC -o bin/linux/release/gpu_md5 cuda_md5.c cuda_md5_cpu.c obj/release/cuda_md5_gpu.cu.o
-L/usr/local/cuda/lib64 -L../../lib64
-L../../common/lib64/linux -L/opt/cuda/NVIDIA_CUDA_SDK/lib64 -lcudart
-L/usr/local/cuda/lib64 -L../../lib64
-L../../common/lib64/linux -L/opt/cuda/NVIDIA_CUDA_SDK/lib64
據我知道我可以只改變G ++到gcc和它應該很好地工作,但事實並非如此。貌似GCC找不到從我打電話cuda_md5.c cuda_md5_cpu.c功能(PS:我不包括cuda_md5.c cuda_md5_cpu.c):
/tmp/ccKdDJiq.o: In function `cuda_compute_md5s':
cuda_md5.c:(.text+0x201): undefined reference to `init_constants'
cuda_md5.c:(.text+0x2e2): undefined reference to `execute_kernel'
collect2: ld returned 1 exit status
有什麼不對?我只是從g ++更改爲gcc。
我很確定我不再使用g ++,這裏是makefile http://pastebin.com/Abnh7Vm2 –
@FredericoSchardong,我相信你不是。但問題是CUFILES沒有用makefile編譯,它們被添加到'OBJS'列表中,這意味着它們已經被編譯。如果它們是用C++編譯器編譯的(沒有'extern C'),你會遇到這個問題。 – paxdiablo
他們正在344線上編譯。我錯了嗎? –