嵌入式平台编译应用程序,其依赖libjpeg库和ffmpeg库,编译出错。
/Deps/lib/libavfilter.so: undefined reference to `avresample_open@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_alloc_context@LIBAVRESAMPLE_3'
/Deps/lib/libavcodec.so: undefined reference to `libiconv'
/Deps/lib/libavfilter.so: undefined reference to `avresample_available@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_convert@LIBAVRESAMPLE_3'
/Deps/lib/libavcodec.so: undefined reference to `libiconv_close'
/Deps/lib/libavfilter.so: undefined reference to `avresample_get_class@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_set_compensation@LIBAVRESAMPLE_3'
/Deps/lib/libavcodec.so: undefined reference to `libiconv_open'
/Deps/lib/libavfilter.so: undefined reference to `avresample_free@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_close@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_read@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_get_delay@LIBAVRESAMPLE_3'
/Deps/lib/libavfilter.so: undefined reference to `avresample_get_out_samples@LIBAVRESAMPLE_3'
原因:libavfilter.so 这个库依赖的一些函数avresample_open等链接程序找不到。libavfilter.so 应该需要依赖其他库,LIBAVRESAMPLE_3,等。
缺少链接库 -lavresample -liconv
LDFLAGS += -L. -ljpeg -lavfilter -lavformat -lswscale -lavdevice -lavcodec -lavutil -lswresample -lopencv_core -lopencv_imgproc -lopencv_imgcodecs -lopencv_videoio -lopencv_highgui -lx264 -lpostproc -lasound #-shared
在Mkefile中加入依赖
LDFLAGS += -L. -ljpeg -lavfilter -lavformat -lswscale -lavdevice -lavcodec -lavutil -lswresample -lopencv_core -lopencv_imgproc -lopencv_imgcodecs -lopencv_videoio -lopencv_highgui -lx264 -lpostproc -lasound
ifeq ($(target_machine),rk3399Pro)
LDFLAGS += -lavresample -liconv
endif