Open siegLoesch opened 1 year ago
The undefined references are in libnggui.so not netgen
directly. Other optional libraries are processed in the toplevel CMakeLists.txt . Using them as an example, this patch works
Index: netgen/CMakeLists.txt
===================================================================
--- netgen.orig/CMakeLists.txt 2023-11-10 10:33:08.124132623 +0100
+++ netgen/CMakeLists.txt 2023-11-10 10:35:43.421445839 +0100
@@ -438,6 +438,9 @@
find_package(FFMPEG REQUIRED)
add_definitions(-DFFMPEG -D__STDC_CONSTANT_MACROS)
include_directories(${FFMPEG_INCLUDE_DIR})
+ if(USE_GUI)
+ target_link_libraries(nggui INTERFACE ${FFMPEG_LIBRARIES})
+ endif(USE_GUI)
endif (USE_MPEG)
#######################################################################
During build of netgen v6.2.2304 the link operation for ng/netgen failed (using cmake option: -DUSEMPEG:BOOL=YES): /usr/bin/ld: libnggui.so: undefined reference to
avcodec_find_encoder' /usr/bin/ld: libnggui.so: undefined reference to
avformat_write_header' /usr/bin/ld: libnggui.so: undefined reference toav_frame_free' /usr/bin/ld: libnggui.so: undefined reference to
avcodec_open2' /usr/bin/ld: libnggui.so: undefined reference toav_interleaved_write_frame' /usr/bin/ld: libnggui.so: undefined reference to
avformat_alloc_output_context2' /usr/bin/ld: libnggui.so: undefined reference toav_frame_make_writable' /usr/bin/ld: libnggui.so: undefined reference to
avcodec_send_frame' /usr/bin/ld: libnggui.so: undefined reference tosws_freeContext' /usr/bin/ld: libnggui.so: undefined reference to
av_init_packet' /usr/bin/ld: libnggui.so: undefined reference toav_dict_free' /usr/bin/ld: libnggui.so: undefined reference to
av_packet_rescale_ts' /usr/bin/ld: libnggui.so: undefined reference toavcodec_get_name' /usr/bin/ld: libnggui.so: undefined reference to
sws_scale' /usr/bin/ld: libnggui.so: undefined reference toavcodec_parameters_from_context' /usr/bin/ld: libnggui.so: undefined reference to
av_dump_format' /usr/bin/ld: libnggui.so: undefined reference toav_write_trailer' /usr/bin/ld: libnggui.so: undefined reference to
avformat_new_stream' /usr/bin/ld: libnggui.so: undefined reference toavcodec_receive_packet' /usr/bin/ld: libnggui.so: undefined reference to
av_frame_alloc' /usr/bin/ld: libnggui.so: undefined reference toav_image_fill_arrays' /usr/bin/ld: libnggui.so: undefined reference to
av_frame_get_buffer' /usr/bin/ld: libnggui.so: undefined reference toavcodec_alloc_context3' /usr/bin/ld: libnggui.so: undefined reference to
avcodec_free_context' /usr/bin/ld: libnggui.so: undefined reference tosws_getContext' /usr/bin/ld: libnggui.so: undefined reference to
avformat_free_context' /usr/bin/ld: libnggui.so: undefined reference toavio_closep' /usr/bin/ld: libnggui.so: undefined reference to
avioopen' collect2: error: ld returned 1 exit statusMy solution / workaround was to add ${FFMPEG_LIBRARIES} to the _target_linklibraries command inside the CMakeLists.txt at ng directory. I have created a patch for that which is attached here: cmListsNg-ffmpegLibraries.zip. Using that it compiles fine without error.
If there is time please let us know if you agree with that.
Best regards Siegfried