Building with AIX gcc 3.3
David Edelsohn
dje@watson.ibm.com
Mon Jul 7 19:05:00 GMT 2003
>>>>> Ken Foskey writes:
Ken> Code is tested and builds on Linux gcc 3.3. I am trying to build icu
Ken> 2.2 on AIX for OpenOffice.org port using gcc 3.3 and the standard ld
Ken> tool and I am getting:
Ken> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
Ken> information.
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::matches(icu_2_2::Replaceable const&, int&, int,
Ken> signed char)
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::toPattern(icu_2_2::UnicodeString&, signed char)
Ken> const
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::matchesIndexValue(unsigned char) const
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::addMatchSetTo(icu_2_2::UnicodeSet&) const
Ken> collect2: ld returned 8 exit status
Ken> the nm command (default aix) cannot deal with these files at all. So I
Ken> cannot really analyse this further.
I do not know what "cannot deal with these files at all" means. I
have no difficulty using AIX nm with libstdc++. If you want demanged
names, use c++filt.
Ken> The looks like bug 4122 but I can compile 4122 code fine. my link line
Ken> is:
Ken> /usr/local/gcc3.3/bin/g++ -O -Wl,-brtl -shared -Wl,-bexpall -o
Ken> libicui18n22.0.so ucln_in.o ... ucurr.o -L../common -licuuc22
Ken> -L../data/out -L../stubdata -licudata22 -lpthread -lm
-Wl,-bexpall does not export symbols with leading underscore,
which are all C++ mangled names in the new ABI. You need to generate the
export list explicitly using nm and awk substr:
nm -BCpg *.o | awk '{ if ((($2 == "T") || ($2 == "D") || ($2 == "B")) && (substr($3,1,1) != ".")) { print $3 } }' | sort -u > icu.exp
Also, you need to use -Wl,-G when creating the shared object and
-Wl,-brtl when linking the final application.
Ken> I tried compiling the binutils from tarball and installing it but it
Ken> makes matters worse.
GNU Binutils does not fully support AIX 5L.
David
More information about the Gcc-help
mailing list