2012-03-09 35 views
4

我收到以下消息,同时尝试编译CUDA程序:在/ usr /斌/劳工处:找不到-lcudart

在/ usr /斌/劳工处:找不到-lcudart

以前从未得到过这种错误。我的PATH有问题吗?

这里的编译命令:

gfortran -g -O2 -I ../共享/ -o ../../bin/xspecfem3D -ffree线长度无../ ../obj/spec/program_specfem3D.o ../../obj/spec/specfem3D_par.o ../../obj/spec/PML_init.o ../../obj/spec/compute_boundary_kernel。 o ../../obj/spec/compute_kernels.o ../../obj/spec/compute_forces_acoustic.o ../../obj/spec/compute_forces_acoustic_pot.o ../../ obj/spec/compute_forces_acoustic_PML.o ../../obj/spec/compute_forces_elastic.o 个../../obj/spec/compute_forces_elastic_Dev.o ../../obj/spec/compute_forces_elastic_noDev.o ../../obj/spec/compute_forces_elastic_Dev_openmp.o ../../obj /spec/compute_add_sources_acoustic.o ../../obj/spec/compute_add_sources_elastic.o ../../obj/spec/compute_coupling_acoustic_el.o ../../obj/spec/compute_coupling_elastic_ac.o 。 ./../obj/spec/compute_stacey_acoustic.o ../../obj/spec/compute_stacey_elastic.o ../../obj/spec/compute_gradient.o ../../obj/spec /compute_interpolated_dva.o ../../obj/spec/initialize_simulation.o ../../obj/spec/read_mesh_databases.o ../../obj/spec/setup_GLL_poin ts.o ../../obj/spec/write_movie_output.o ../../obj/spec/create_color_image.o ../../obj/spec/write_seismograms.o ../ .. /obj/spec/write_output_ASCII.o ../../obj/spec/detect_mesh_surfaces.o ../../obj/spec/setup_movie_meshes.o ../../obj/spec/read_topography_bathymetry.o ../../obj/spec/setup_sources_receivers.o ../../obj/spec/prepare_timerun.o ../../obj/spec/iterate_time.o ../../obj/ spec/finalize_simulation.o ../../obj/spec/save_adjoint_kernels.o ../../obj/spec/specfem3D.o ../../obj/spec/assemble_MPI_vector.o ../。 ./obj/spec/make_gravity.o ../../obj/spec/noise_tomography.o ../../lib/libspecfem.a ../../obj/spec/check_fields_cuda.cuda.o ../../obj/spec/compute_add_sources_acoustic_cuda.cuda.o ../../obj/spec/compute_add_sources_elastic_cuda.cuda.o 。 ./../obj/spec/compute_coupling_cuda.cuda.o ../../obj/spec/compute_forces_acoustic_cuda.cuda.o ../../obj/spec/compute_forces_elastic_cuda.cuda.o ../ ../obj/spec/compute_kernels_cuda.cuda.o ../../obj/spec/compute_stacey_acoustic_cuda.cuda.o ../../obj/spec/compute_stacey_elastic_cuda.cuda.o ../ .. /obj/spec/it_update_displacement_cuda.cuda.o ../../obj/spec/noise_tomography_cuda.cuda.o ../../obj/spec/prepare_mesh_constants_cuda.cuda.o ../../obj /规格/反fer_fields_cuda.cuda.o ../../obj/spec/write_seismograms_cuda.cuda.o ../../obj/spec/save_and_compare_cpu_vs_gpu.cudacc.o ../../obj/spec/serial。Ø-lcuda -lcudart -lcublas

在/ usr /斌/劳工处:找不到-lcudart

collect2:LD返回1退出状态

编辑:

我已经改变了联动命令

gfortran -g -O2 -ffree线长度无-I ../共享/ -L $ CUDA_HOME/lib中[其余如下]

而我所有的PATH似乎都没问题,但我仍然有同样的错误。

EDIT2:

的错误是,我试图编译代码是64位的,所以我需要给路径diferent集的.so的,分别位于上

/usr/local/cuda/lib64

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

+0

你能发布你正在使用的编译命令或makefile ? – talonmies 2012-03-09 12:20:55

+0

当然,但它确实有点大...... – Imperian 2012-03-09 12:28:42

+0

您是否安装了CUDA'toolkit'? – 2012-03-10 08:18:17

回答

8

您没有指定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库。

编辑:

另见this

+0

对我而言没有效果。 :( – Imperian 2012-03-09 16:51:34

+0

什么都不起作用?怎么没有用?你能更新你的问题吗? – talonmies 2012-03-09 17:36:12

+0

我已经更新了连接命令,而LD_LIBRARY_PATH确实有$ CUDA_HOME/lib的条目,但是仍然发生同样的错误。 – Imperian 2012-03-12 12:17:49

0

我解决了这个问题!转到你的makefile并将/ usr/local/cuda /改为/usr/local/cuda-7.0(如果这就是你所得到的) 它对我有效

+0

Where is这个makefile的位置?你能更具体吗? – 2017-08-24 10:52:36

相关问题