error "This header is not available in freestanding m ode.”

David Filip <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Hi newlib community!

I have successfully built and are using Circle (46) on Linux (Rocky/CentOS 8) using the toolchain 3.2:

	$ aarch64-none-elf-g++ --version
	aarch64-none-elf-g++ (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009
	Copyright (C) 2023 Free Software Foundation, Inc.

However, I am having problems building any of the samples, and receive the error:

requires_hosted.h:34:4: error: #error "This header is not available in freestanding mode.”

To build my environment, I have downloaded stdlib from:

	https://github.com/smuehlst/circle-stdlib.git

I then I installed and built Circle under:

	circle-stdlib/libs/circle

And then newlib under circle-stdlib/libs/std-newlib:

	$ git clone https://github.com/smuehlst/circle-newlib.git

And under mbedtls under circle-stdlib/libs/mbedtls:

	$ git clone https://github.com/Mbed-TLS/mbedtls.git

And then finally, under circle-stdlib:

	$ ./configure --raspberrypi e3 --prefix aarch64-none-elf- --opt-tls
	$ make

Which seems to successfully build everything with no errors.  However, if I try to build any of the samples under:

	circle-stdlib/samples:

I receive a ton of errors, starting with a bunch of:

	requires_hosted.h:34:4: error: #error "This header is not available in freestanding mode.”

So my questions re:

1) Did I build the environment correctly, based on the steps I’ve outlined, or am I off base?

2) Any idea why I am getting these errors, and how to fix them?

I’ve included my build steps because it wasn’t initially clear (at least to me) how Circle + StdLib + NewLib all fit together, so let me know if I’ve made any bad assumptions, or if there is an easier way to integrate and build these components.

However, doing ‘make’ does seem to build the libraries correctly, and it did build:

	$ find circle-stdlib/install
	install
	install/.gitignore
	install/aarch64-none-circle
	install/aarch64-none-circle/lib
	install/aarch64-none-circle/lib/libm.a
	install/aarch64-none-circle/lib/libc.a
	install/aarch64-none-circle/lib/libg.a
	install/aarch64-none-circle/lib/libcirclenewlib.a
	install/aarch64-none-circle/lib/libnosys.a
	install/aarch64-none-circle/lib/nosys.specs
	install/aarch64-none-circle/include => Lots of Include Files

But none of the samples will build correctly.  The compiler seems to be complaining that I am building with —freestanding while still referencing the C/C++ standard libraries, although those libraries are now provided by newlib?

Thanks in advance for any ideas or suggestions, and/or for clarifying any of my misconceptions about how all these pieces fit together.

Regards,

Dave Filip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.