GNOME Bugzilla – Bug 749423
ios: Duplicated symbols in latest GIT preventing applications from linking
Last modified: 2015-08-16 13:37:06 UTC
I am developing an iOS app with Gstreamer and just built it for arm64 by using command ./cerbero-uninstalled -c config/cross-ios-universal.cbc package gstreamer-1.0 After installing the package, adding it to my project and when trying to rebuild the app, I got the error: duplicate symbol _ff_log2_tab in: /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libavcodec_a_arm64_-log2_tab.o) /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libavformat_a_arm64_-log2_tab.o) duplicate symbol _ff_log2_tab in: /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libavcodec_a_arm64_-log2_tab.o) /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libavutil_a_arm64_-log2_tab.o) duplicate symbol _iconv_locale_charset in: /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libcharset_a_arm64_-localcharset.o) /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libiconv_a_arm64_-localcharset.o) duplicate symbol _hash_pjw_bare in: /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libgnutls-openssl_a_arm64_-hash-pjw-bare.o) /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libtasn1_a_arm64_-hash-pjw-bare.o) duplicate symbol _strverscmp in: /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libgnutls-openssl_a_arm64_-strverscmp.o) /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/GStreamer(libtasn1_a_arm64_-strverscmp.o) ld: 5 duplicate symbols for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ld: 5 duplicate symbols for architecture armv7
(In reply to Liuting from comment #0) > duplicate symbol _ff_log2_tab in: > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libavcodec_a_arm64_-log2_tab.o) > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libavformat_a_arm64_-log2_tab.o) > duplicate symbol _ff_log2_tab in: > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libavcodec_a_arm64_-log2_tab.o) > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libavutil_a_arm64_-log2_tab.o) For these we have to patch libav or at least its build system. Not great. > duplicate symbol _iconv_locale_charset in: > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libcharset_a_arm64_-localcharset.o) > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libiconv_a_arm64_-localcharset.o) These shouldn't really happen. locale_charset is used by both, but we rename the latter to iconv_locale_charset already. The former shouldn't be affected at all by the renaming. Not sure how that is even possible :) > duplicate symbol _hash_pjw_bare in: > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libgnutls-openssl_a_arm64_-hash-pjw-bare.o) > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libtasn1_a_arm64_-hash-pjw-bare.o) > duplicate symbol _strverscmp in: > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libgnutls-openssl_a_arm64_-strverscmp.o) > /Users/liutingdu/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/ > GStreamer(libtasn1_a_arm64_-strverscmp.o) These will have to be renamed in at least one place, but in both places might be safer.
The duplicated symbols can also be seen here: https://ci.gstreamer.net/job/cerbero-ios-universal-7.1/2317/console But for some reason there are no duplicates for libav here, only the others.
New list: https://ci.gstreamer.net/job/cerbero-ios-universal-7.1/2830/console (goom / goom2k1 is fixed already)
libgnutls-openssl / libtasn, and libiconv / libcharset should be fixed now: commit c5b9b8be6306e75390899d09030101f55c4681a2 Author: Sebastian Dröge <sebastian@centricular.com> Date: Fri Aug 14 13:44:57 2015 +0200 libiconv: Only rename locale_charset() for libiconv, not libcharset If we rename it for both, both will still conflict with each other. locale_charset() is public API of libcharset but not libiconv, so rename it for libiconv. https://bugzilla.gnome.org/show_bug.cgi?id=749423 commit bcdb05c5f7d65f7c80dac533472456f7ca4236f0 Author: Sebastian Dröge <sebastian@centricular.com> Date: Fri Aug 14 13:02:47 2015 +0200 gnutls: Don't ship the OpenSSL compat library It's GPLv3 licensed and we don't use it anywhere anyway. And apart from that it is very incomplete.
Should be fixed for now: commit 6a1d5bb6ed37095d8de81d2fc928f6b096c51076 Author: Sebastian Dröge <sebastian@centricular.com> Date: Fri Aug 14 18:51:59 2015 +0200 libtasn1: Rename gnulib symbols to prevent conflicts with other libraries
No duplicated symbols left: https://ci.gstreamer.net/job/cerbero-ios-universal-7.1/2838/console