/usr/bin/ld:找不到-lcudart

/usr/bin/ld:找不到-lcudart,cuda,nvcc,Cuda,Nvcc,我在尝试编译CUDA程序时收到以下消息: /usr/bin/ld:找不到-lcudart 以前从未犯过这种错误。我的路径有问题吗 下面是编译命令: gfortran-g-O2-ffree线路长度无-I../shared/-o ../../bin/xspecfem3D../../obj/spec/program_specfem3D.o ../../obj/spec/specfem3D_par.o.././obj/spec/PML_init.o ../../obj/spec/compute\u bo

我在尝试编译CUDA程序时收到以下消息:

/usr/bin/ld:找不到-lcudart

以前从未犯过这种错误。我的路径有问题吗

下面是编译命令:

gfortran-g-O2-ffree线路长度无-I../shared/-o ../../bin/xspecfem3D../../obj/spec/program_specfem3D.o ../../obj/spec/specfem3D_par.o.././obj/spec/PML_init.o ../../obj/spec/compute\u boundary\u kernel.o ../../obj/spec/compute_kernels.o ../../obj/spec/compute\u forces\u acoustic.o ../../obj/spec/compute\u forces\u acoustic\u pot.o ../../obj/spec/compute\u forces\u acoustic\u PML.o ../../obj/spec/compute\u forces\u elastic.o ../../obj/spec/compute\u forces\u elastic\u Dev.o ../../obj/spec/compute\u forces\u elastic\u noDev.o ../../obj/spec/compute\u forces\u elastic\u Dev\u openmp.o ../../obj/spec/compute\u添加\u源\u声学.o ../../obj/spec/compute\u添加\u源\u elastic.o ../../obj/spec/compute_耦合_声学_el.o ../../obj/spec/compute\u耦合\u弹性\u ac.o ../../obj/spec/compute\u stacey\u acoustic.o ../../obj/spec/compute\u stacey\u elastic.o ../../obj/spec/compute_gradient.o ../../obj/spec/compute\u interpolated\u dva.o ../../obj/spec/initialize\u simulation.o ../../obj/spec/read_mesh_databases.o../../obj/spec/setup_GLL_points.o ../../obj/spec/write\u movie\u output.o ../../obj/spec/create_color_image.o../../obj/spec/write_seismograms.o ../../obj/spec/write\u输出\u ASCII.o ../../obj/spec/detect\u mesh\u surfaces.o ../../obj/spec/setup\u movie\u mesh.o ../../obj/spec/read\u tography\u dethymetry.o ../../obj/spec/setup\u sources\u receivers.o ../../obj/spec/prepare_timerun.o../../obj/spec/iterate_time.o ../../obj/spec/finalize\u simulation.o ../../obj/spec/save_adjunction_kernels.o../../obj/spec/specfem3D.o ../../obj/spec/assembly\u MPI\u vector.o../../obj/spec/make\u gravity.o ../../obj/spec/noise_tomography.o../../lib/libspecfem.a ../../obj/spec/check_fields_cuda.cuda.o ../../obj/spec/compute\u add\u sources\u acoustic\u cuda.cuda.o ../../obj/spec/compute\u add\u sources\u elastic\u cuda.cuda.o ../../obj/spec/compute_耦合_cuda.cuda.o ../../obj/spec/compute\u forces\u acoustic\u cuda.cuda.o ../../obj/spec/compute\u forces\u elastic\u cuda.cuda.o ../../obj/spec/compute\u kernels\u cuda.cuda.o ../../obj/spec/compute\u stacey\u acoustic\u cuda.cuda.o ../../obj/spec/compute\u stacey\u elastic\u cuda.cuda.o ../../obj/spec/it\u update\u displacement\u cuda.cuda.o ../../obj/spec/noise\u tomography\u cuda.cuda.o ../../obj/spec/prepare\u mesh\u constants\u cuda.cuda.o ../../obj/spec/transfer\u fields\u cuda.cuda.o ../../obj/spec/write_地震图_cuda.cuda.o ../../obj/spec/save\u和\u比较\u cpu\u与\u gpu.cudacc.o ../../obj/spec/serial.o-lcuda-lcudart-lcublas

/usr/bin/ld:找不到-lcudart

collect2:ld返回了1个退出状态

编辑:

我已将链接命令更改为

gfortran-g-O2-ffree line length none-I../shared/-L$CUDA_HOME/lib[其余如下]

我所有的路径看起来都正常,但我仍然有同样的错误

编辑2:

错误是我试图编译的代码是64位的,所以我需要为路径提供一组不同的.so,它们位于

/usr/local/cuda/lib64


现在编译运行良好,没有任何问题。

您没有指定链接器的CUDA库位置,这就是链接失败的原因
nvcc
被“自动”配置为查找CUDA运行时库组件,但如果您直接与主机编译器链接,则需要明确指定它们在编译器中的位置。尝试将悬挂机构命令更改为:

gfortran -g -O2 -ffree-line-length-none -I../shared/ -L$CUDA_HOME/lib [rest follows]
其中
CUDA_HOME
表示安装CUDA工具包的路径。在linux和OS X系统上,这通常是
/usr/local/cuda
。然后需要确保
LD_LIBRARY_PATH
包含
$CUDA_HOME/lib
的条目,以便可执行文件在运行时动态加载所需的CUDA库

编辑:


另请参见

我已修复此问题!转到makefile并将/usr/local/cuda/更改为/usr/local/cuda-7.0(如果这是您得到的)
它对我有用

你能发布你正在使用的编译命令或makefile吗?当然,但它真的有点大…你安装了CUDA
工具包
吗?当然,我已经将它与CUDA一起安装了。什么不起作用?它怎么不起作用?你能更新你的问题吗?我已经更新了linkage命令,LD_LIBRARY_PATH确实有$CUDA_HOME/lib的条目,但是同样的错误仍然发生。这个makefile位于哪里?你能说得更具体些吗?