Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libnggui.so: undefined reference to ffmpeg functions #157

Open
siegLoesch opened this issue Jul 18, 2023 · 1 comment
Open

libnggui.so: undefined reference to ffmpeg functions #157

siegLoesch opened this issue Jul 18, 2023 · 1 comment

Comments

@siegLoesch
Copy link

During build of netgen v6.2.2304 the link operation for ng/netgen failed (using cmake option: -DUSE_MPEG: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 to av_frame_free' /usr/bin/ld: libnggui.so: undefined reference to avcodec_open2'
/usr/bin/ld: libnggui.so: undefined reference to av_interleaved_write_frame' /usr/bin/ld: libnggui.so: undefined reference to avformat_alloc_output_context2'
/usr/bin/ld: libnggui.so: undefined reference to av_frame_make_writable' /usr/bin/ld: libnggui.so: undefined reference to avcodec_send_frame'
/usr/bin/ld: libnggui.so: undefined reference to sws_freeContext' /usr/bin/ld: libnggui.so: undefined reference to av_init_packet'
/usr/bin/ld: libnggui.so: undefined reference to av_dict_free' /usr/bin/ld: libnggui.so: undefined reference to av_packet_rescale_ts'
/usr/bin/ld: libnggui.so: undefined reference to avcodec_get_name' /usr/bin/ld: libnggui.so: undefined reference to sws_scale'
/usr/bin/ld: libnggui.so: undefined reference to avcodec_parameters_from_context' /usr/bin/ld: libnggui.so: undefined reference to av_dump_format'
/usr/bin/ld: libnggui.so: undefined reference to av_write_trailer' /usr/bin/ld: libnggui.so: undefined reference to avformat_new_stream'
/usr/bin/ld: libnggui.so: undefined reference to avcodec_receive_packet' /usr/bin/ld: libnggui.so: undefined reference to av_frame_alloc'
/usr/bin/ld: libnggui.so: undefined reference to av_image_fill_arrays' /usr/bin/ld: libnggui.so: undefined reference to av_frame_get_buffer'
/usr/bin/ld: libnggui.so: undefined reference to avcodec_alloc_context3' /usr/bin/ld: libnggui.so: undefined reference to avcodec_free_context'
/usr/bin/ld: libnggui.so: undefined reference to sws_getContext' /usr/bin/ld: libnggui.so: undefined reference to avformat_free_context'
/usr/bin/ld: libnggui.so: undefined reference to avio_closep' /usr/bin/ld: libnggui.so: undefined reference to avio_open'
collect2: error: ld returned 1 exit status

My solution / workaround was to add ${FFMPEG_LIBRARIES} to the target_link_libraries 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

@drew-parsons
Copy link

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)

 #######################################################################

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants