É mesmo impossível conseguir a libc Original? [RESOLVIDO]

1. É mesmo impossível conseguir a libc Original? [RESOLVIDO]

Apprentice X
ApprenticeX

(usa Slackware)

Enviado em 02/12/2021 - 12:41h

Boa Tarde a Todos!

É mesmo impossível conseguir a libc Original? Sem implementações ou modificações de compiladores?
Tenho buscado na Internet sem sucesso!

No Site stackoverflow.com tanto BR quanto Americano vi inúmeras perguntas sobre isso sendo negativadas, deletadas, uma enorme má vontade das pessoas de sequer explicarem aos autores das perguntas qualquer coisa nem mesmo dar o motivo de fecharem suas perguntas.

A questão é que também me interessei em ter esses sources para estudar!
Afinal, isso é um Assunto Proibido? Visto que parece não existir nenhuma informação sobre isso em nenhum lugar?

Penso que quando a linguagem foi criada, eles compilavam de alguma forma, e não usavam o gcc!


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/12/2021 - 15:48h

Não existe “libc original”, pois ninguém é dono do C.

Além de definir aspectos léxicos, gramaticais e de funcionamento básico de construção dos programas, o padrão do C define dois níveis de conformidade de implementações que podem ser criadas a partir dele: freestanding, que significa que a implementação traz todos os aspectos obrigatórios da linguagem e um conjunto mínimo de bibliotecas a fim de que um programa possa executar num computador mínimo, sem o suporte de um ambiente de execução muito sofisticado ou de um sistema operacional, e hosted, que traz um conjunto maior de funções, e implica que o programa será executado com o suporte de um ambiente de execução capaz de realizar operações mais sofisticadas, à semelhança de um sistema operacional, incluindo, por exemplo, armazenamento em arquivos, alocação dinâmica de memória, operações mais sofisticadas com strings etc.

A “biblioteca padrão” do C é o conjunto de todas as funções, tipos de dados, variáveis globais, constantes, enumerações e macros definidos pelo padrão do C para uma implementação hosted. Esses elementos são descritos pelo padrão mas, exceto no caso de algumas constantes fixas, não são definidos por ele.

Em outras palavras, não existe uma implementação de referência da biblioteca padrão. Cada implementação é livre para criar suas próprias versões de cada um desses elementos, desde que atenda todos os comportamentos descritos para eles.

As implementações podem até estender aquilo que o padrão descreve, particularmente em áreas que o padrão diz que são definidas pela implementação (implementation-defined) ou deliberadamente indefinidas (undefined), desde que não entre em contradição com os aspectos sobre os quais ele se manifesta explicitamente.

Um exemplo de extensão é o que acontece com a função fflush(), cujo comportamento específico é descrito para o padrão apenas para fluxos de saída, mas é indefinido para fluxos de entrada. Implementações no mundo Microsoft (antigo MS-DOS e também Windows) e versões recentes da GlibC têm, obviamente, o comportamento prescrito no padrão para fluxos de saída, mas definem também o comportamento para fluxos de entrada (que é de descartar o que estiver no buffer de entrada mas ainda não tiver sido consumido pelo programa). A libc de sistemas BSD não traz (ou não trazia, quando eu usava BSD diariamente) esse comportamento, mas, até onde lembro, simplemente ignoravam fluxos de entrada, deixando-os intocados. Embora diferentes, todas essas implementações estão de acordo com o padrão, pois seguem à risca o que é explicitamente descrito, e inovam apenas em áreas em que não há regras definido algo diferente daquilo que tais implementações escolheram fazer (eu até costumo brincar que uma implementação que escolha causar uma explosão termonuclear na sua casa quando você chama a função com um fluxo de entrada também é conforme, desde que faça o que tem de fazer se for chamada com fluxos de saída).


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

3. Re: É mesmo impossível conseguir a libc Original? [RESOLVIDO]

Cézar Augusto
cizordj

(usa Debian)

Enviado em 04/12/2021 - 21:06h

Se isso não for a melhor resposta, então eu não sei o que é.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts