After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 749423 - ios: Duplicated symbols in latest GIT preventing applications from linking
ios: Duplicated symbols in latest GIT preventing applications from linking
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: cerbero
git master
Other Mac OS
: Normal blocker
: 1.5.90
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-05-15 11:33 UTC by Liuting
Modified: 2015-08-16 13:37 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Liuting 2015-05-15 11:33:48 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
Comment 1 Sebastian Dröge (slomo) 2015-05-18 09:17:33 UTC
(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.
Comment 2 Sebastian Dröge (slomo) 2015-05-18 10:07:54 UTC
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.
Comment 3 Sebastian Dröge (slomo) 2015-08-14 07:35:07 UTC
New list: https://ci.gstreamer.net/job/cerbero-ios-universal-7.1/2830/console

(goom / goom2k1 is fixed already)
Comment 4 Sebastian Dröge (slomo) 2015-08-14 11:45:55 UTC
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.
Comment 5 Sebastian Dröge (slomo) 2015-08-14 16:53:03 UTC
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
Comment 6 Sebastian Dröge (slomo) 2015-08-15 07:46:41 UTC
No duplicated symbols left: https://ci.gstreamer.net/job/cerbero-ios-universal-7.1/2838/console