Changes to get a clean build of apps/examples/cxxtest with the STM32 and uClibc++
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5310 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
41f2f44f19
commit
23fe4e4c2a
@ -93,7 +93,7 @@ LDLINKFLAGS = $(ARCHSCRIPT) # Link flags used with $(LD)
|
|||||||
CCLINKFLAGS = $(ARCHSCRIPT) # Link flags used with $(CC)
|
CCLINKFLAGS = $(ARCHSCRIPT) # Link flags used with $(CC)
|
||||||
LDFLAGS = $(ARCHSCRIPT) # For backward compatibility, same as CCLINKFLAGS
|
LDFLAGS = $(ARCHSCRIPT) # For backward compatibility, same as CCLINKFLAGS
|
||||||
|
|
||||||
LIBSUPXX = ${shell $(CC) --print-file-name=libsupc++.a}
|
LIBSUPXX = ${shell $(CC) $(CXXFLAGS) --print-file-name=libsupc++.a}
|
||||||
EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
|
EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
|
||||||
EXTRA_LIBS = -lsupc++
|
EXTRA_LIBS = -lsupc++
|
||||||
|
|
||||||
|
@ -1008,7 +1008,34 @@ Where <subdir> is one of the following:
|
|||||||
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||||
reconfiguration process.
|
reconfiguration process.
|
||||||
|
|
||||||
3. At present (2012/11/02), this example builds only with exceptions
|
3. Ideally, you should build with a toolchain based on GLIBC or
|
||||||
|
uClibc++. It you use a toolchain based on newlib, you may see
|
||||||
|
an error like the following:
|
||||||
|
|
||||||
|
.../lib/libsupc++.a(vterminate.o): In function `__gnu_cxx::__verbose_terminate_handler()':
|
||||||
|
vterminate.cc:(....): undefined reference to `_impure_ptr'
|
||||||
|
|
||||||
|
Here is a quick'n'dirty fix:
|
||||||
|
|
||||||
|
1. Get the directory where you can find libsupc++:
|
||||||
|
|
||||||
|
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -print-file-name=libsupc++.a
|
||||||
|
|
||||||
|
2. Go to that directory and save a copy of vterminate.o (in case you
|
||||||
|
want to restore it later:
|
||||||
|
|
||||||
|
cd <the-directory-containing-libsupc++.a>
|
||||||
|
arm-none-eabi-ar.exe -x libsupc++.a vterminate.o
|
||||||
|
|
||||||
|
3. Then remove vterminate.o from the library. At build time, the
|
||||||
|
uClibc++ package will provide a usable replacement vterminate.o.
|
||||||
|
|
||||||
|
Now NuttX should link with no problem. If you want to restore the
|
||||||
|
vterminate.o that you removed from libsupc++, you can do that with:
|
||||||
|
|
||||||
|
arm-none-eabi-ar.exe rcs libsupc++.a vterminate.o
|
||||||
|
|
||||||
|
4. At present (2012/11/02), this example builds only with exceptions
|
||||||
disabled (CONFIG_UCLIBCXX_EXCEPTIONS=n).
|
disabled (CONFIG_UCLIBCXX_EXCEPTIONS=n).
|
||||||
|
|
||||||
elf:
|
elf:
|
||||||
|
@ -114,7 +114,7 @@ ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gc
|
|||||||
ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
|
ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
|
||||||
|
|
||||||
LDSCRIPT = ld.script
|
LDSCRIPT = ld.script
|
||||||
LIBSUPXX = ${shell $(CC) --print-file-name=libsupc++.a}
|
LIBSUPXX = ${shell $(CC) $(CXXFLAGS) --print-file-name=libsupc++.a}
|
||||||
EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
|
EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
|
||||||
EXTRA_LIBS = -lsupc++
|
EXTRA_LIBS = -lsupc++
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* configs/twr-k60n512/scripts/ld.script
|
* configs/twr-k60n512/scripts/ld.script
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||||
|
Loading…
Reference in New Issue
Block a user