Josef Wolf writes: >> > > Do you mean you're trying to build GCC itself, or you're trying to build >> > > your own program? > > I am trying to build my own program using GCC which I have built by myself :) > >> > > Please show the full commands you're using >> > > >> > > If you add -v to the gcc command it will show exactly what it's doing. > > Appended to the end of this post. > >> > Oh actually I see the problem. You're using -lgcc and your gcc was >> > configured to use newlib, so libgcc depends on newlib. > > I am irritated about that. I see that libgcc needs malloc() and friends. But I > don't see why libgcc would need sbrk/write/close/lseek/read. > >> Whilst there are functions in libgcc that depend on newlib (not many and >> probably none that you'd need in this instance), I wouldn't have expected >> -lgcc to cause -lc to be added to the link set. > > Exactly. As a side-note: I provide my own implementations of memcpy() and > friends, So I don't see why gcc would need to pull them from > newlib. Especially when I explicitly provide all those fancy options I > mentioned above to prevent using any libraries. This is because libgcc was built with newlib. If you do not want newlib, I suggest configuring with --without-headers --without-newlib. I've also added some support code to that configuration recently, but I don't think it'll match your configuration. You might have to do some patching after that for your new target, specifically to set use_gcc_stdint=provide in config.gcc. Please try adding those two flags to configure and seeing where that goes. Have a lovely day! >> Josef, what is the *complete* command line that you issue when you link the >> program? > > Here it comes: > > $ /usr/local/crossgcc/arm-none-eabi/bin/arm-none-eabi-gcc \ > lots.o of.o object.o files.o \ > -v -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard \ > -Tcubemx/STM32F429BITx_FLASH.ld -nostdlib -lm -lnosys -nolibc \ > -nodefaultlibs -nostartfiles -nostdlib -ffreestanding -static-libgcc \ > -Wl,-Map=build/cubemx.map,--cref \ > -Wl,--gc-sections,--exclude-libs,libc.a \ > -o build/cubemx.elf > Using built-in specs. > COLLECT_GCC=/usr/local/crossgcc/arm-none-eabi/bin/arm-none-eabi-gcc > COLLECT_LTO_WRAPPER=/usr/local/crossgcc/arm-none-eabi/bin/../libexec/gcc/arm-none-eabi/9.3.0/lto-wrapper > Target: arm-none-eabi > Configured with: /var/tmp/builds/crossgcc/src/gcc-9.3.0/configure --target=arm-none-eabi --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --enable-languages=c,c++ --with-gnu-ld --with-gnu-as --with-newlib --with-system-zlib --enable-commonbfdlib --enable-interwork --enable-install-libbfd --enable-plugins --enable-multilib --disable-nls --disable-shared --disable-libssp --nfp --gas -v --prefix=/usr/local/crossgcc/arm-none-eabi --enable-languages=c,c++ --with-pkgversion=crossgcc --disable-libstdcxx-verbose --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libstdcxx-pch --disable-threads --disable-tls --with-headers=yes --with-multilib-list=rmprofile > Thread model: single > gcc version 9.3.0 (crossgcc) > COMPILER_PATH=/usr/local/crossgcc/arm-none-eabi/bin/../libexec/gcc/arm-none-eabi/9.3.0/:/usr/local/crossgcc/arm-none-eabi/bin/../libexec/gcc/:/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ > LIBRARY_PATH=/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/thumb/v7e-m+fp/hard/:/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/:/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/:/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/:/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/ > COLLECT_GCC_OPTIONS='-v' '-mcpu=cortex-m4' '-mthumb' '-mfpu=fpv4-sp-d16' '-mfloat-abi=hard' '-T' 'cubemx/STM32F429BITx_FLASH.ld' '-nostdlib' '-nolibc' '-nodefaultlibs' '-nostartfiles' '-nostdlib' '-ffreestanding' '-static-libgcc' '-o' 'build/cubemx.elf' '-march=armv7e-m+fp' > /usr/local/crossgcc/arm-none-eabi/bin/../libexec/gcc/arm-none-eabi/9.3.0/collect2 -plugin /usr/local/crossgcc/arm-none-eabi/bin/../libexec/gcc/arm-none-eabi/9.3.0/liblto_plugin.so -plugin-opt=/usr/local/crossgcc/arm-none-eabi/bin/../libexec/gcc/arm-none-eabi/9.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccXjRFlS.res -X -o build/cubemx.elf -L/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/thumb/v7e-m+fp/hard -L/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard -L/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0 -L/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc -L/usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib lots.o of.o object.o files.o -lm -lnosys -Map=build/cubemx.map --cref --gc-sections --exclude-libs libc.a -T cubemx/STM32F429BITx_FLASH.ld > /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld: /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a(lib_a-sbrkr.o): in function `_sbrk_r': > /var/tmp/builds/crossgcc/src/newlib-3.1.0/newlib/libc/reent/sbrkr.c:51: undefined reference to `_sbrk' > /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld: /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a(lib_a-writer.o): in function `_write_r': > /var/tmp/builds/crossgcc/src/newlib-3.1.0/newlib/libc/reent/writer.c:49: undefined reference to `_write' > /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld: /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a(lib_a-closer.o): in function `_close_r': > /var/tmp/builds/crossgcc/src/newlib-3.1.0/newlib/libc/reent/closer.c:47: undefined reference to `_close' > /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld: /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a(lib_a-lseekr.o): in function `_lseek_r': > /var/tmp/builds/crossgcc/src/newlib-3.1.0/newlib/libc/reent/lseekr.c:49: undefined reference to `_lseek' > /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld: /usr/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a(lib_a-readr.o): in function `_read_r': > /var/tmp/builds/crossgcc/src/newlib-3.1.0/newlib/libc/reent/readr.c:49: undefined reference to `_read' > collect2: error: ld returned 1 exit status > make[1]: *** [cubemx/Makefile:209: build/cubemx.elf] Error 1 > make[1]: Leaving directory '/m/s/rep/git/siemens/it1010/src' > make: *** [Makefile:16: all] Error 2 -- Arsen Arsenović