2

我正在开发一些将在带有 OpenCV 和 FFMPEG 的 Linux 上运行的代码。我想使用我的 Mac 开发此代码,并且我需要 Mac 上的 FFMPEG 功能。

我已经能够像这样运行配置:

./configure --without-quicktime --with-ffmpeg --without-python --disable-apps CPPFLAGS=-I/opt/local/include LDFLAGS="-L/opt/local/lib -L/usr/local/share -L/usr/local/lib"

但是当我运行 make 我得到这个错误:

提取 /Users/adamb/opencv/trunk/opencv/src/./.libs/lib_cxcore.a
(cd .libs/libcxcore.lax/lib_cxcore.a && ar x /Users/adamb/opencv/trunk/opencv/src/./.libs/lib_cxcore.a)
g++ -dynamiclib -single_module -o .libs/libcxcore.2.dylib .libs/dummy.o .libs/libcxcore.lax/lib_cxcore.a/cxalloc.o .libs/libcxcore.lax/lib_cxcore.a/cxarithm.o 。 libs/libcxcore.lax/lib_cxcore.a/cxarray.o .libs/libcxcore.lax/lib_cxcore.a/cxcmp.o .libs/libcxcore.lax/lib_cxcore.a/cxconvert.o .libs/libcxcore.lax/lib_cxcore。 a/cxcopy.o .libs/libcxcore.lax/lib_cxcore.a/cxdatastructs.o .libs/libcxcore.lax/lib_cxcore.a/cxdrawing.o .libs/libcxcore.lax/lib_cxcore.a/cxdxt.o .libs/ libcxcore.lax/lib_cxcore.a/cxerror.o .libs/libcxcore.lax/lib_cxcore.a/cximage.o .libs/libcxcore.lax/lib_cxcore.a/cxlapack.o .libs/libcxcore.lax/lib_cxcore.a/ cxlogic.o.libs/libcxcore.lax/lib_cxcore.a/cxlut.o.libs/libcxcore.lax/lib_cxcore.a/cxmathfuncs.o.libs/libcxcore.lax/lib_cxcore.a/cxmatmul.o.libs/libcxcore。松懈/lib_cxcore.a/cxmatrix.o.libs/libcxcore.lax/lib_cxcore.a/cxmean。o .libs/libcxcore.lax/lib_cxcore.a/cxmeansdv.o .libs/libcxcore.lax/lib_cxcore.a/cxminmaxloc.o .libs/libcxcore.lax/lib_cxcore.a/cxnorm.o .libs/libcxcore.lax/ lib_cxcore.a/cxouttext.o .libs/libcxcore.lax/lib_cxcore.a/cxpersistence.o .libs/libcxcore.lax/lib_cxcore.a/cxrand.o .libs/libcxcore.lax/lib_cxcore.a/cxsumpixels.o。 libs/libcxcore.lax/lib_cxcore.a/cxsvd.o .libs/libcxcore.lax/lib_cxcore.a/cxswitcher.o .libs/libcxcore.lax/lib_cxcore.a/cxtables.o .libs/libcxcore.lax/lib_cxcore。 a/cxutils.o -L/opt/local/lib -L/usr/local/share -L/usr/local/lib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse -install_name /usr/ local/lib/libcxcore.2.dylib -Wl,-compatibility_version -Wl,3 -Wl,-current_version -Wl,3.0libs/libcxcore.lax/lib_cxcore.a/cxouttext.o .libs/libcxcore.lax/lib_cxcore.a/cxpersistence.o .libs/libcxcore.lax/lib_cxcore.a/cxrand.o .libs/libcxcore.lax/lib_cxcore。 a/cxsumpixels.o .libs/libcxcore.lax/lib_cxcore.a/cxsvd.o .libs/libcxcore.lax/lib_cxcore.a/cxswitcher.o .libs/libcxcore.lax/lib_cxcore.a/cxtables.o .libs/ libcxcore.lax/lib_cxcore.a/cxutils.o -L/opt/local/lib -L/usr/local/share -L/usr/local/lib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott - msse -install_name /usr/local/lib/libcxcore.2.dylib -Wl,-compatibility_version -Wl,3 -Wl,-current_version -Wl,3.0libs/libcxcore.lax/lib_cxcore.a/cxouttext.o .libs/libcxcore.lax/lib_cxcore.a/cxpersistence.o .libs/libcxcore.lax/lib_cxcore.a/cxrand.o .libs/libcxcore.lax/lib_cxcore。 a/cxsumpixels.o .libs/libcxcore.lax/lib_cxcore.a/cxsvd.o .libs/libcxcore.lax/lib_cxcore.a/cxswitcher.o .libs/libcxcore.lax/lib_cxcore.a/cxtables.o .libs/ libcxcore.lax/lib_cxcore.a/cxutils.o -L/opt/local/lib -L/usr/local/share -L/usr/local/lib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott - msse -install_name /usr/local/lib/libcxcore.2.dylib -Wl,-compatibility_version -Wl,3 -Wl,-current_version -Wl,3.0libs/libcxcore.lax/lib_cxcore.a/cxtables.o .libs/libcxcore.lax/lib_cxcore.a/cxutils.o -L/opt/local/lib -L/usr/local/share -L/usr/local/ lib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse -install_name /usr/local/lib/libcxcore.2.dylib -Wl,-compatibility_version -Wl,3 -Wl,-current_version -Wl,3.0libs/libcxcore.lax/lib_cxcore.a/cxtables.o .libs/libcxcore.lax/lib_cxcore.a/cxutils.o -L/opt/local/lib -L/usr/local/share -L/usr/local/ lib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse -install_name /usr/local/lib/libcxcore.2.dylib -Wl,-compatibility_version -Wl,3 -Wl,-current_version -Wl,3.0
    未定义的符号:
      “_dgesdd_”,引用自:
      cxsvd.o 中的 _cvSVD
      cxsvd.o 中的 _cvSVD
  “_sgelsd_”,引用自:
      cxlapack.o 中的 _cvSolve
      cxlapack.o 中的 _cvSolve
  “_ssyevr_”,引用自:
      cxlapack.o 中的 _cvEigenVV
      cxlapack.o 中的 _cvEigenVV
  “_dgetrf_”,引用自:
      cxlapack.o 中的 _cvDet
      cxlapack.o 中的 _cvInvert
  “_dgetri_”,引用自:
      cxlapack.o 中的 _cvInvert
      cxlapack.o 中的 _cvInvert
  “_sgesdd_”,引用自:
      cxsvd.o 中的 _cvSVD
      cxsvd.o 中的 _cvSVD
  “_dgels_”,引用自:
      cxlapack.o 中的 _cvSolve
      cxlapack.o 中的 _cvSolve
  “_dgesv_”,引用自:
      cxlapack.o 中的 _cvSolve
  “_sgetrf_”,引用自:
      cxlapack.o 中的 _cvDet
      cxlapack.o 中的 _cvInvert
  “_sgetri_”,引用自:
      cxlapack.o 中的 _cvInvert
      cxlapack.o 中的 _cvInvert
  “_dpotrf_”,引用自:
      cxlapack.o 中的 _cvInvert
      cxlapack.o 中的 _cvSolve
  “_dpotri_”,引用自:
      cxlapack.o 中的 _cvInvert
  “_dpotrs_”,引用自:
      cxlapack.o 中的 _cvSolve
  “_sgels_”,引用自:
      cxlapack.o 中的 _cvSolve
      cxlapack.o 中的 _cvSolve
  “_spotrf_”,引用自:
      cxlapack.o 中的 _cvInvert
      cxlapack.o 中的 _cvSolve
  “_spotri_”,引用自:
      cxlapack.o 中的 _cvInvert
  “_sgesv_”,引用自:
      cxlapack.o 中的 _cvSolve
  “_spotrs_”,引用自:
      cxlapack.o 中的 _cvSolve
  “_dgelsd_”,引用自:
      cxlapack.o 中的 _cvSolve
      cxlapack.o 中的 _cvSolve
  “_dsyevr_”,引用自:
      cxlapack.o 中的 _cvEigenVV
      cxlapack.o 中的 _cvEigenVV
ld:未找到符号
collect2: ld 返回 1 个退出状态
make[2]: *** [libcxcore.la] 错误 1
make[1]: *** [all-recursive] 错误 1
make: *** [全部] 错误 2

我尝试使用较新版本的 OpenCV 1.1pre1,但我得到了类似的错误,但符号不同。我使用与上面相同的 ./configure 。

提取 /Users/adamb/Downloads/opencv-1.1.0/otherlibs/highgui/./.libs/lib_highgui.a
(cd .libs/libhighgui.lax/lib_highgui.a && ar x /Users/adamb/Downloads/opencv-1.1.0/otherlibs/highgui/./.libs/lib_highgui.a)
g++ -dynamiclib -o .libs/libhighgui.2.0.0.dylib .libs/dummy.o .libs/libhighgui.lax/lib_highgui.a/bitstrm.o .libs/libhighgui.lax/lib_highgui.a/cvcap.o 。 libs/libhighgui.lax/lib_highgui.a/cvcap_ffmpeg.o .libs/libhighgui.lax/lib_highgui.a/cvcap_images.o .libs/libhighgui.lax/lib_highgui.a/grfmt_base.o .libs/libhighgui.lax/lib_highgui。 a/grfmt_bmp.o .libs/libhighgui.lax/lib_highgui.a/grfmt_exr.o .libs/libhighgui.lax/lib_highgui.a/grfmt_imageio.o .libs/libhighgui.lax/lib_highgui.a/grfmt_jpeg.o .libs/ libhighgui.lax/lib_highgui.a/grfmt_jpeg2000.o .libs/libhighgui.lax/lib_highgui.a/grfmt_png.o .libs/libhighgui.lax/lib_highgui.a/grfmt_pxm.o .libs/libhighgui.lax/lib_highgui.a/ grfmt_sunras.o .libs/libhighgui.lax/lib_highgui.a/grfmt_tiff.o .libs/libhighgui.lax/lib_highgui.a/image.o .libs/libhighgui.lax/lib_highgui.a/loadsave.o .libs/libhighgui。lax/lib_highgui.a/precomp.o .libs/libhighgui.lax/lib_highgui.a/utils.o .libs/libhighgui.lax/lib_highgui.a/window.o .libs/libhighgui.lax/lib_highgui.a/window_carbon。 o -L/opt/local/lib -L/usr/local/share -L/usr/local/lib ../../cxcore/src/.libs/libcxcore.dylib /opt/local/lib/libavformat。 dylib /opt/local/lib/libavcodec.dylib ../../cv/src/.libs/libcv.dylib /Users/adamb/Downloads/opencv-1.1.0/cxcore/src/.libs/libcxcore.dylib /opt/local/lib/libjasper.dylib /opt/local/lib/libjpeg.dylib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse2 -framework ApplicationServices -Wl,-framework -Wl,Carbon -install_name /usr/local/lib/libhighgui.2.dylib -compatibility_version 3 -current_version 3.0 -Wl,-single_modulea/window_carbon.o -L/opt/local/lib -L/usr/local/share -L/usr/local/lib ../../cxcore/src/.libs/libcxcore.dylib /opt/local/ lib/libavformat.dylib /opt/local/lib/libavcodec.dylib ../../cv/src/.libs/libcv.dylib /Users/adamb/Downloads/opencv-1.1.0/cxcore/src/.libs /libcxcore.dylib /opt/local/lib/libjasper.dylib /opt/local/lib/libjpeg.dylib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse2 -framework ApplicationServices -Wl,-framework -Wl ,Carbon -install_name /usr/local/lib/libhighgui.2.dylib -compatibility_version 3 -current_version 3.0 -Wl,-single_modulea/window_carbon.o -L/opt/local/lib -L/usr/local/share -L/usr/local/lib ../../cxcore/src/.libs/libcxcore.dylib /opt/local/ lib/libavformat.dylib /opt/local/lib/libavcodec.dylib ../../cv/src/.libs/libcv.dylib /Users/adamb/Downloads/opencv-1.1.0/cxcore/src/.libs /libcxcore.dylib /opt/local/lib/libjasper.dylib /opt/local/lib/libjpeg.dylib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse2 -framework ApplicationServices -Wl,-framework -Wl ,Carbon -install_name /usr/local/lib/libhighgui.2.dylib -compatibility_version 3 -current_version 3.0 -Wl,-single_moduledylib /opt/local/lib/libjasper.dylib /opt/local/lib/libjpeg.dylib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse2 -framework ApplicationServices -Wl,-framework -Wl,Carbon - install_name /usr/local/lib/libhighgui.2.dylib -compatibility_version 3 -current_version 3.0 -Wl,-single_moduledylib /opt/local/lib/libjasper.dylib /opt/local/lib/libjpeg.dylib -lavformat -lavcodec -lpthread -ldl -lm -march=prescott -msse2 -framework ApplicationServices -Wl,-framework -Wl,Carbon - install_name /usr/local/lib/libhighgui.2.dylib -compatibility_version 3 -current_version 3.0 -Wl,-single_module
未定义的符号:
  “_av_rescale_q”,引用自:
      cvcap_ffmpeg.o 中的 icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, unsigned char*, unsigned int, AVFrame*)
  “_img_convert”,引用自:
      cvcap_ffmpeg.o 中的 CvCapture_FFMPEG::retrieveFrame()
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::writeFrame(_IplImage const*)
  “_av_free”,引用自:
      cvcap_ffmpeg.o 中的 icv_alloc_picture_FFMPEG(int, int, int, bool)
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::close()
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::close()
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::close()
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::close()
      cvcap_ffmpeg.o 中的 CvCapture_FFMPEG::close()
  “_av_freep”,引用自:
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::close()
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::close()
  “_av_malloc”,引用自:
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::open(char const*, int, double, CvSize, bool)
  “_av_sub_q”,引用自:
      cvcap_ffmpeg.o 中的 CvVideoWriter_FFMPEG::open(char const*, int, double, CvSize, bool)
ld:未找到符号

如果我添加 --enable-shared=no 并且 OpenCV 将编译,但我的程序将无法运行......

关于如何使用默认的 --enable-shared 编译其中任何一个的任何建议?

4

3 回答 3

2

您的链接行缺少 -lavutil -lavcodec。

于 2009-02-27T06:09:02.670 回答
1

我使用自制软件安装了 OpenCV 和 FFmpeg ,并且都可以正常工作。

于 2010-07-24T19:02:58.323 回答
0

我对此没有太多经验,但是您的系统上是否安装了 ffmpeg 库?我不相信它们包含在 OpenCV 中。

于 2009-02-26T18:35:07.207 回答