Перестал работать makefile opencv

0

У меня есть следующий Makefile для проектов с использованием opencv

CFLAGS = 'pkg-config --cflags opencv'
LIBS = 'pkg-config --libs opencv'

% : %.cpp
    g++ $(CFLAGS) -o $@ $< $(LIBS)

До недавнего времени это работало нормально. Теперь я получаю следующие ошибки:

/usr/bin/ld: cannot find -lcufft
/usr/bin/ld: cannot find -lnpps
/usr/bin/ld: cannot find -lnppi
/usr/bin/ld: cannot find -lnppc
/usr/bin/ld: cannot find -lcudart

pkg-config --libs opencv выходы pkg-config --libs opencv:

/usr/local/lib/libopencv_calib3d.so 
/usr/local/lib/libopencv_contrib.so 
/usr/local/lib/libopencv_core.so 
/usr/local/lib/libopencv_features2d.so 
/usr/local/lib/libopencv_flann.so 
/usr/local/lib/libopencv_gpu.so 
/usr/local/lib/libopencv_highgui.so 
/usr/local/lib/libopencv_imgproc.so 
/usr/local/lib/libopencv_legacy.so 
/usr/local/lib/libopencv_ml.so 
/usr/local/lib/libopencv_nonfree.so 
/usr/local/lib/libopencv_objdetect.so 
/usr/local/lib/libopencv_ocl.so 
/usr/local/lib/libopencv_photo.so
/usr/local/lib/libopencv_stitching.so
/usr/local/lib/libopencv_superres.so 
/usr/local/lib/libopencv_ts.a 
/usr/local/lib/libopencv_video.so 
/usr/local/lib/libopencv_videostab.so 
/usr/lib/x86_64-linux-gnu/libXext.so 
/usr/lib/x86_64-linux-gnu/libX11.so 
/usr/lib/x86_64-linux-gnu/libICE.so 
/usr/lib/x86_64-linux-gnu/libSM.so 
/usr/lib/libGL.so 
/usr/lib/x86_64-linux-gnu/libGLU.so 
-lcufft -lnpps -lnppi -lnppc -lcudart -ltbb -lrt -lpthread -lm -ldl 

Я экспортировал путь библиотеки cuda в LD_LIBRARY_PATH:

echo $LD_LIBRARY_PATH
/usr/local/cuda-5.5/lib64

Этот путь действительно содержит библиотеки:

ls $LD_LIBRARY_PATH
libcublas_device.a   libcudart.so.5.0     libcufftw.so          libcurand.so.5.5       libnppc.so.5.5.22  libnvToolsExt.so
libcublas.so         libcudart.so.5.5     libcufftw.so.5.5      libcurand.so.5.5.22    libnppi.so         libnvToolsExt.so.1
libcublas.so.5.0     libcudart.so.5.5.22  libcufftw.so.5.5.22   libcusparse.so         libnppi.so.5.5     libnvToolsExt.so.1.0.0
libcublas.so.5.5     libcudart_static.a   libcuinj64.so         libcusparse.so.5.5     libnppi.so.5.5.22
libcublas.so.5.5.22  libcufft.so          libcuinj64.so.5.5     libcusparse.so.5.5.22  libnpps.so
libcudadevrt.a       libcufft.so.5.5      libcuinj64.so.5.5.22  libnppc.so             libnpps.so.5.5
libcudart.so         libcufft.so.5.5.22   libcurand.so          libnppc.so.5.5         libnpps.so.5.5.22

Но я все еще получаю ошибки. Я запускаю opencv 2.4.9 и cuda 5.5. Что я забываю?

  • 0
    Вы пытались добавить путь к библиотеке cuda в Makefile с помощью -L ? Может быть, здесь есть ответ stackoverflow.com/questions/1904990/…
  • 0
    Теперь я сделал это: g++ -L /usr/local/cuda-5.5/lib64 pkg-config --cflags opencv -o writeFramesMainSimple writeFramesMainSimple.cpp pkg-config --libs opencv и это сработало! Я до сих пор не понимаю, почему он вообще перестал работать, поскольку это именно то, что находится в LD_LIBRARY_PATH . По вашей ссылке это должно нормально работать ...
Теги:
opencv
makefile
cuda

2 ответа

0
Лучший ответ

Я теперь сделал это: g++ -L/usr/local/cuda-5.5/lib64 pkg-config --cflags opencv -o writeFramesMainSimple writeFramesMainSimple.cpp pkg-config --Libs opencv и он сработает!

1

LD_LIBRARY_PATH предназначен для выполнения. Для компиляции вам нужно использовать LIBRARY_PATH. Либо вы экспортируете /usr/local/cuda-5.5/lib64 в LIBRARY_PATH либо добавили путь к LIBS в Makefile:

LIBS += -L/usr/local/cuda-5.5/lib64

LD_LIBRARY_PATH против LIBRARY_PATH

  • 0
    Я экспортировал /usr/local/cuda-5.5/lib64 в LIBRARY_PATH . Теперь я получаю /usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib64/../lib/libcufft.so when searching for -lcufft /usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib64/../lib/libnpps.so when searching for -lnpps /usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib64/../lib/libnppi.so when searching for -lnppi /usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib64/../lib/libnppc.so when searching for -lnppc /usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib64/../lib/libcudart.so when searching for -lcudart
  • 0
    stackoverflow.com/questions/17080280/...
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню