/ usr / bin / ld: не могу найти -lcudart - PullRequest
4 голосов
/ 09 марта 2012

Я получаю следующее сообщение при попытке скомпилировать программу CUDA:

/ usr / bin / ld: не удается найти -lcudart

Никогда раньше не получал такой ошибки. Есть ли проблемы с моим PATH?

Вот команда компиляции:

gfortran -g -O2 -свободная длина строки-нет -I ../ shared / -o ../../bin/xspecfem3D ../../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_points.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/spec/transfer_fields_cuda.cuda.o ../../obj/spec/write_seismograms_cuda.cuda.o ../../obj/spec/save_and_compare_cpu_vs_gpu.cudacc.o ../../obj/spec/serial.o -lcuda -lcudart -lcublas

/ usr / bin / ld: не удается найти -lcudart

collect2: ld вернул 1 статус выхода

Edit:

Я изменил команду связывания на

gfortran -g -O2 -free-line-length-none -I ../ shared / -L $ CUDA_HOME / lib [остальные следуют]

И все мои пути в порядке, но у меня все та же ошибка.

Edit2:

Ошибка заключалась в том, что код, который я пытался скомпилировать, был в 64-битном формате, поэтому мне нужно было указать путь другому набору .so, которые расположены в

/ usr / local / cuda / lib64

Теперь компиляция прошла нормально и без проблем.

Ответы [ 2 ]

8 голосов
/ 09 марта 2012

Вы не указываете расположение библиотек CUDA для компоновщика, поэтому связывание не выполняется.nvcc настроен «автоматически» для поиска компонентов библиотеки времени выполнения CUDA, но если вы напрямую связываетесь с компилятором хоста, вам нужно будет явно указать их расположение для компилятора.Попробуйте изменить команду связывания следующим образом:

gfortran -g -O2 -ffree-line-length-none -I../shared/ -L$CUDA_HOME/lib [rest follows]

, где CUDA_HOME обозначает путь, где установлен инструментарий CUDA.Обычно это /usr/local/cuda в системах Linux и OS X.Затем вам нужно убедиться, что LD_LIBRARY_PATH содержит запись для $CUDA_HOME/lib, чтобы исполняемый файл динамически загружал необходимые библиотеки CUDA во время выполнения.

РЕДАКТИРОВАТЬ:

Также см. это

1 голос
/ 19 июля 2015

Я исправил это! Перейдите в ваш make-файл и измените / usr / local / cuda / на /usr/local/cuda-7.0 (если это то, что вы получили) У меня это сработало

...