This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: undefined reference to __aeabi_unwind_cpp_pr1, __cxa_end_cleanup
- From: Ian Lance Taylor <iant at google dot com>
- To: JJ <alchemistmba at gmail dot com>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Mon, 26 Oct 2009 07:04:11 -0700
- Subject: Re: undefined reference to __aeabi_unwind_cpp_pr1, __cxa_end_cleanup
- References: <2e70368b0910241536hf36fb06v9f2304e2a0a5887f@mail.gmail.com>
JJ <alchemistmba@gmail.com> writes:
> I get undefined references to these two symbols while linking:
>
> _aeabi_unwind_cpp_pr1
> __cxa_end_cleanup
>
>
> The command I'm using is:
> cross-gnueabi-g++ -static -nostartfiles -nodefaultlibs -nostdlib -T
> temp.ld -o standalone_program start.o abc.o xyz.o -lgcc -lc
> -L/tools/arm/gnu_crosstools/arm/lib/gcc/arm-linux-gnueabi/4.3.2/
_aeabi_unwind_cpp_pr1 is normally defined in libgcc. If the undefined
reference is coming from libc, then you need to use -lgcc -lc -lgcc
(and, yes, sometimes you need -lgcc -lc -lgcc -lc -lgcc, which you can
also write as -Wl,--start-group,-lgcc,-lc,--end-group).
__cxa_end_cleanup is normally defined lib libsupc++. Since you are
linking C++ code with -nodefaultlibs, you probably need an explicit
-lsupc++.
Ian