【问题标题】:Makefile opencv stopped workingMakefile opencv 停止工作
【发布时间】:2014-06-20 07:51:50
【问题描述】:

我有以下使用 opencv 的项目的 Makefile

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 输出:

/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。我忘记了什么?

【问题讨论】:

  • 您是否尝试在 Makefile 中使用 -L 添加 cuda 库的路径?也许这里有答案stackoverflow.com/questions/1904990/…
  • 我现在这样做了:g++ -L /usr/local/cuda-5.5/lib64 pkg-config --cflags opencv -o writeFramesMainSimple writeFramesMainSimple.cpp pkg-config --libs opencv 并且成功了!我仍然不明白为什么它一开始就停止工作,因为这正是 LD_LIBRARY_PATH 中的内容。根据您的链接,这应该可以正常工作...

标签: c++ opencv cuda makefile


【解决方案1】:

LD_LIBRARY_PATH 用于运行时。对于编译,您需要使用LIBRARY_PATH。 要么将/usr/local/cuda-5.5/lib64 导出到LIBRARY_PATH,要么在Makefile 中添加LIBS 的路径:

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

LD_LIBRARY_PATH vs LIBRARY_PATH

【讨论】:

  • 我将/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
  • 当我将/usr/local/cuda-5.5/lib 导出到LIBRARY_PATH 时,我得到/usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib/../lib/libcufft.so when searching for -lcufft /usr/bin/ld: skipping incompatible /usr/local/cuda-5.5/lib/libcufft.so when searching for -lcufft /usr/bin/ld: cannot find -lcufft 等。
  • 为什么你的路径中有这个/../? (/usr/local/cuda-5.5/lib/../lib/libcufft.so)
  • 它会自动执行此操作,但不知道为什么。我的路径如我所述,/usr/local/cuda-5.5/lib64/usr/local/cuda-5.5/lib
【解决方案2】:

我现在这样做了:g++ -L /usr/local/cuda-5.5/lib64 pkg-config --cflags opencv -o writeFramesMainSimple writeFramesMainSimple.cpp pkg-config --libs opencv,它成功了!

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2015-01-02
    • 2012-06-14
    • 2019-02-07
    相关资源
    最近更新 更多