Re: How to omit libc (newlib) on bare metal (freestanding)?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 21 Feb 2023, 23:32 Josef Wolf, <jw@xxxxxxxxxxxxx> wrote:

> Hello all,
>
> I am trying to build for a bare metal target without any OS support and I
> want
> to omit libc (newlib).
>


Do you mean you're trying to build GCC itself, or you're trying to build
your own program?



> So I add
>
>    -ffunction-sections -nostdlib -ffreestanding
>
> flags to assembler/compiler and
>
>    -lnosys -nolibc -nodefaultlibs -nostartfiles -nostdlib -ffreestanding
>    -static-libgcc -lgcc  -lnosys -nolibc -nodefaultlibs -nostartfiles
>    -nostdlib -ffreestanding -static-libgcc -lgcc
>
> to linker


Please show the full commands you're using

If you add -v to the gcc command it will show exactly what it's doing.







>
>
> But gcc still tries to pull newlib:
>
> /m/a/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld:
> /m/a/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-init.o):
> in function `__libc_init_array':
> /var/tmp/builds/crossgcc/src/newlib-3.1.0/newlib/libc/misc/init.c:40:
> undefined reference to `_init'
> /m/a/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld:
> /m/a/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'
> /m/a/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld:
> /m/a/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'
> /m/a/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld:
> /m/a/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'
> /m/a/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld:
> /m/a/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'
> /m/a/local/crossgcc/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/9.3.0/../../../../arm-none-eabi/bin/ld:
> /m/a/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
>
> So what is the magic option to tell gcc not to mess around with libc
> (newlib)?
>
> Thanks!
>
>
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux