On Monday 03 August 2009 10:37:39 am Mwanguhya Daniel Murungi wrote: > Hello guys, > > Am having a problem linking against libstdc++. Linking against libstdc++ > generates the following errors; > > anchor:/anchor-toolchain/onward/packages/phase-two/gcc$ gcc t.c -lstdc++ > /anchor-toolchain/anchor-tools/bin/../lib/gcc/i486-anchor-linux-uclibc/4.2. >4/../../../libssp.so: warning: the 'gets' function is dangerous and should > not be used. > /anchor-toolchain/anchor-tools/bin/../lib/gcc/i486-anchor-linux-uclibc/4.2. >4/../../../libstdc++.so: undefined reference to `_Unwind_Resume_or_Rethrow' > /anchor-toolchain/anchor-tools/bin/../lib/gcc/i486-anchor-linux-uclibc/4.2. >4/../../../libstdc++.so: undefined reference to `_Unwind_RaiseException' > /anchor-toolchain/anchor-tools/bin/../lib/gcc/i486-anchor-linux-uclibc/4.2. >4/../../../libstdc++.so: undefined reference to > `_Unwind_GetLanguageSpecificData' > ... > collect2: ld returned 1 exit status > > --t.c------------------------------ > #include <stdio.h> > int main() > { > printf("test\n"); > return 0; > } > ------------------------------------- > > The _Unwind* functions are defined in libgcc_s. When I link against > libgcc_s, i get the following error; > > $ gcc t.c -lstdc++ -lgcc_s > > $ ./a.out > Can't modify /anchor-tools/lib/libstdc++.so.6's text section. Use GCC > option -fPIC for shared objects, please. > > Can someone please tell me the cause of the above error and how to get rid > of it. > > NB: am using gcc 4.2.4 and uClibc-0.9.30.1 > > Attached is the verbose out from running 'gcc -v t.c -Wl,--verbose'
Found my problem! Compiling t.c with the options `-fno-PIE -nopie` reveals the error; a reference to a hidden symbol `__umoddi3` -- compile log --- gcc t.c -lstdc++ -fno-PIE -nopie /anchor-toolchain/anchor-tools/bin/../lib/gcc/i486-anchor-linux-uclibc/4.2.4/../../../libssp.so: warning: the 'gets' function is dangerous and should not be used. /anchor-tools/bin/ld: a.out: hidden symbol `__umoddi3' in /anchor-toolchain/anchor-tools/bin/../lib/gcc/i486-anchor-linux-uclibc/4.2.4/libgcc .a(_umoddi3.o) is referenced by DSO /anchor-tools/bin/ld: final link failed: Nonrepresentable section on output collect2: ld returned 1 exit status ------------------------------------------------------------------------------------------------------------ grep shows that the symbol is defined in libc-2.7.so and libc.so.6 but not libc.so.0. I added --with-lib-path=/anchor-tools/lib but i still get the error mentioned above when linking against libstdc++. Has anyone experienced the above error? Any help would be greatly appreciated. -- http://linuxfromscratch.org/mailman/listinfo/hlfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page