I ran into this problem in my last libidn2 build on i386.
libtool: link: cc -shared -fPIC -DPIC -o .libs/libidn2.so.1.0 -fno-common -W -Wabi -Waddress -Wall -Wattributes -Wbad-function-cast <<snip lots of -W / -f>> -O2 -pipe -Wl,--version-script=./idn2.map .libs/idna.o .libs/lookup.o .libs/decode.o .libs/register.o .libs/bidi.o .libs/version.o .libs/error.o .libs/punycode.o .libs/free.o .libs/data.o .libs/tr46map.o .libs/tables.o .libs/context.o -Wl,-whole-archive /pobj/libidn2-2.0.0/libidn2-2.0.0/gl/.libs/libgnu.a /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a -Wl,-no-whole-archive -L.libs -liconv -lunistring -Wl,-soname,libidn2.so.1.0 ld: error: duplicate symbol: c_isalnum >>> defined at c-ctype.c >>> c-ctype.o:(c_isalnum) in archive >>> /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a >>> defined at c-ctype.c >>> c-ctype.o:(.text+0x0) in archive >>> /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a ld: error: duplicate symbol: c_isalpha >>> defined at c-ctype.c >>> c-ctype.o:(c_isalpha) in archive >>> /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a >>> defined at c-ctype.c >>> c-ctype.o:(.text+0x30) in archive >>> /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a ld: error: duplicate symbol: c_isascii >>> defined at c-ctype.c >>> c-ctype.o:(c_isascii) in archive >>> /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a >>> defined at c-ctype.c >>> c-ctype.o:(.text+0x50) in archive >>> /pobj/libidn2-2.0.0/libidn2-2.0.0/unistring/.libs/libunistring.a (etc.etc.) I've seen it before but not often, comparing against a good build didn't give me any ideas what might be wrong. It's not a major problem but I thought I'd send logs over in case you have any ideas (attached logs from good+bad builds).
libidn2.log.bad.gz
Description: application/gunzip
libidn2.log.good.gz
Description: application/gunzip