> For the complete documentation index, see [llms.txt](https://mentebinaria.gitbook.io/assembly/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/ambiente-freestanding.md).

# Ambiente freestanding

O ambiente de execução *freestanding* é normalmente usado quando o código C é compilado para executar fora de um sistema operacional. Nesse ambiente nenhum dos recursos provindos do ambiente *hosted* são garantidos e sua existência ou não depende da implementação.

Os únicos recursos que são oferecidos pela libc são os declarados nos seguintes *header files*:

**\<float.h>**, **\<iso646.h>**, **\<limits.h>**, **\<stdalign.h>**, **\<stdarg.h>**, **\<stdbool.h>**, **\<stddef.h>**, **\<stdint.h>** e **\<stdnoreturn.h>**.

Quaisquer outros recursos são dependentes de implementação.

No GCC para compilar um código visando o ambiente *freestanding* é possível usar a opção `-ffreestanding`. Também se pode usar a opção `-fhosted` para compilar para ambiente *hosted* mas esse já é o padrão.

Já a opção `-nostdlib` desabilita a *linkedição* da libc.
