This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Trouble building GCC with objc for ARM Cortex-M4
- From: Jens Bauer <jens-lists at gpio dot dk>
- To: gcc at gcc dot gnu dot org
- Date: Thu, 21 Aug 2014 02:41:12 +0200
- Subject: Trouble building GCC with objc for ARM Cortex-M4
- Authentication-results: sourceware.org; auth=none
Hi all.
I'm trying to build GCC 4.8.3 with ObjC support for ARM Cortex-M4.
I had this working with an earlier version of GCC (I think it was GCC 4.5).
-But now I get build errors.
It seems to me that it's required to add the --enable-libobjc switch (otherwise I the build stops when it can't find libobjc).
(I do not require libobjc, if it's possible to build GCC with ObjC support without libobjc).
I am building this toolchain on a PowerMac G5 (so it's not a trivial intel-Mac build, as the latest host-GCC I can use is v4.2!)
The bootstrap GCC builds fine. newlib-2.1.0 builds fine, however building the final GCC fails.
These are my build-lines:
Bootstrap GCC:
"$source/gcc-4.8.3/configure" --target="$target" --prefix="$prefix" --disable-nls --with-gcc --with-gnu-as --with-gnu-ld --with-dwarf2 --enable-multilib --enable-interwork --with-newlib --disable-libssp --with-system-zlib --disable-decimal-float --disable-libffi --disable-libmudflap --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r --disable-libstdcxx-pch --without-headers --enable-languages="c,c++,objc,obj-c++" --enable-libobjc
make all-gcc && sudo make install-gcc && echo "Success"
Newlib:
"$source/newlib-2.1.0/configure" --target="$target" --prefix="$prefix" --enable-interwork --enable-multilib --disable-libssp --disable-nls --enable-newlib-io-long-long --enable-newlib-register-fini --disable-newlib-supplied-syscalls
make CFLAGS_FOR_TARGET="-D__IEEE_BIG_ENDIAN -D__IEEE_BYTES_LITTLE_ENDIAN -D__BUFSIZ__=64" && sudo make install || sudo make install && echo "Success"
(note: make install fails on first try but succeeds on second try, which is why I do it twice - this is due to that a directory is missing the first time).
Final GCC:
"$source/gcc-4.8.3/configure" --target="$target" --prefix="$prefix" --disable-nls --with-gcc --with-gnu-as --with-gnu-ld --with-dwarf2 --enable-multilib --enable-interwork --with-newlib --disable-libssp --with-system-zlib --disable-decimal-float --disable-libffi --disable-libmudflap --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r --disable-libstdcxx-pch --with-headers=yes --enable-languages="c,c++,objc,obj-c++" --enable-libobjc
make all && sudo make install && echo "Success"
But when I add the --enable-libobjc, I get the following output:
---8<-----8<-----8<-----
make[4]: Nothing to be done for `all-am'.
Checking multilib configuration for libstdc++-v3...
Checking multilib configuration for libquadmath...
Checking multilib configuration for libobjc...
/bin/sh ./libtool --mode=compile /Users/jens/toolchain/Build/gcc/./gcc/xgcc -B/Users/jens/toolchain/Build/gcc/./gcc/ -nostdinc -B/Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/ -isystem /Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/targ-include -isystem /Users/jens/toolchain/Source/gcc-4.8.3/newlib/libc/include -B/usr/local/arm-none-eabi/arm-none-eabi/bin/ -B/usr/local/arm-none-eabi/arm-none-eabi/lib/ -isystem /usr/local/arm-none-eabi/arm-none-eabi/include -isystem /usr/local/arm-none-eabi/arm-none-eabi/sys-include /Users/jens/toolchain/Source/gcc-4.8.3/libobjc/NXConstStr.m -c \
-I. -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc/config -I../.././gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../libgcc -I../libgcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../include -fgnu-runtime \
-o NXConstStr.lo
/bin/sh ./libtool --mode=compile /Users/jens/toolchain/Build/gcc/./gcc/xgcc -B/Users/jens/toolchain/Build/gcc/./gcc/ -nostdinc -B/Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/ -isystem /Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/targ-include -isystem /Users/jens/toolchain/Source/gcc-4.8.3/newlib/libc/include -B/usr/local/arm-none-eabi/arm-none-eabi/bin/ -B/usr/local/arm-none-eabi/arm-none-eabi/lib/ -isystem /usr/local/arm-none-eabi/arm-none-eabi/include -isystem /usr/local/arm-none-eabi/arm-none-eabi/sys-include /Users/jens/toolchain/Source/gcc-4.8.3/libobjc/Object.m -c \
-I. -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc/config -I../.././gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../libgcc -I../libgcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../include -fgnu-runtime \
-o Object.lo
/bin/sh ./libtool --mode=compile /Users/jens/toolchain/Build/gcc/./gcc/xgcc -B/Users/jens/toolchain/Build/gcc/./gcc/ -nostdinc -B/Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/ -isystem /Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/targ-include -isystem /Users/jens/toolchain/Source/gcc-4.8.3/newlib/libc/include -B/usr/local/arm-none-eabi/arm-none-eabi/bin/ -B/usr/local/arm-none-eabi/arm-none-eabi/lib/ -isystem /usr/local/arm-none-eabi/arm-none-eabi/include -isystem /usr/local/arm-none-eabi/arm-none-eabi/sys-include /Users/jens/toolchain/Source/gcc-4.8.3/libobjc/Protocol.m -c \
-I. -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc/config -I../.././gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../libgcc -I../libgcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../include -fgnu-runtime \
-o Protocol.lo
/bin/sh ./libtool --mode=compile /Users/jens/toolchain/Build/gcc/./gcc/xgcc -B/Users/jens/toolchain/Build/gcc/./gcc/ -nostdinc -B/Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/ -isystem /Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/targ-include -isystem /Users/jens/toolchain/Source/gcc-4.8.3/newlib/libc/include -B/usr/local/arm-none-eabi/arm-none-eabi/bin/ -B/usr/local/arm-none-eabi/arm-none-eabi/lib/ -isystem /usr/local/arm-none-eabi/arm-none-eabi/include -isystem /usr/local/arm-none-eabi/arm-none-eabi/sys-include /Users/jens/toolchain/Source/gcc-4.8.3/libobjc/accessors.m -c \
-I. -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc/config -I../.././gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../libgcc -I../libgcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../include -fgnu-runtime \
-o accessors.lo
/bin/sh ./libtool --mode=compile /Users/jens/toolchain/Build/gcc/./gcc/xgcc -B/Users/jens/toolchain/Build/gcc/./gcc/ -nostdinc -B/Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/ -isystem /Users/jens/toolchain/Build/gcc/arm-none-eabi/newlib/targ-include -isystem /Users/jens/toolchain/Source/gcc-4.8.3/newlib/libc/include -B/usr/local/arm-none-eabi/arm-none-eabi/bin/ -B/usr/local/arm-none-eabi/arm-none-eabi/lib/ -isystem /usr/local/arm-none-eabi/arm-none-eabi/include -isystem /usr/local/arm-none-eabi/arm-none-eabi/sys-include /Users/jens/toolchain/Source/gcc-4.8.3/libobjc/linking.m -c \
-I. -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../gcc/config -I../.././gcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../libgcc -I../libgcc -I/Users/jens/toolchain/Source/gcc-4.8.3/libobjc/../include -fgnu-runtime \
-o linking.lo
/bin/sh: ./libtool: No such file or directory
/bin/sh: ./libtool: No such file or directory
make[2]: *** [NXConstStr.lo] Error 127
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [Object.lo] Error 127
/bin/sh: ./libtool: No such file or directory
make[2]: *** [Protocol.lo] Error 127
/bin/sh: ./libtool: No such file or directory
make[2]: *** [accessors.lo] Error 127
/bin/sh: ./libtool: No such file or directory
make[2]: *** [linking.lo] Error 127
make[1]: *** [all-target-libobjc] Error 2
make: *** [all] Error 2
--->8----->8----->8-----
Note: the "Checking multilib configuration for libobjc..."
The strange thing here is that the line above the failed one builds fine, but suddenly ./libtool is not found (?!??)
My question is: What's the correct / intended way of building GCC with ObjC support ?
Love
Jens