我将 C++ 代码转换为 C,现在我也在尝试更改 Makefile。我有这个:
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_cpu.c 中找到我在 cuda_md5.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。