indicando máquina libgloss ao construir newlib para bespoke plataforma
-
06-09-2019 - |
Pergunta
Estou compilando newlib para um bespoke PowerPC plataforma sem OS. Leitura de informações na net eu percebo que eu preciso para implementar funções stub em um subdiretório <newplatform>
de libgloss.
A minha confusão é a forma como isso vai ser pego quando eu compilar newlib. É a última parte do argumento --target
para configure por exemplo powerpc-ibm-<newplatform>
?
Se este for o caso, então eu acho que eu deveria usar o mesmo --target
ao compilar binutils e gcc?
Obrigado
Solução
Eu portado newlib e GCC mim também. E eu lembro que eu não tenho que fazer muita coisa para tornar o trabalho newlib (portar GCC, gás e libbfd foi a maioria do trabalho).
Apenas teve que ajustar alguns arquivos sobre números de ponto flutuante, desligue algumas bandeiras POSIX / SomeOtherStandard que o fizeram não utilizar algumas funções mais sofisticadas e código de suporte de gravação para longjmp
/ setjmp
que a carga eo estado loja de registo para os buffers de salto. Mas certamente você tem que dizer que o alvo usando --target
para que ele usa a máquina sub-diretório de direita e outros enfeites. Eu me lembro que eu tinha para adicionar pequeno código para configure.sub
para torná-lo saber sobre o meu destino e imprimir o trible configuração completa (cpu-fabricante-os ou similar). Só descobri que eu tinha para editar um arquivo chamado configure.host
também, que define algumas opções para o seu alvo (por exemplo, se um sistemas de operação alças sinais aumentou raise
, ou se a própria newlib deve simular manipulação).
neste blog de Anthony Green como uma diretriz, onde ele descreve a portabilidade do GCC, newlib e binutils. Eu acho que é uma grande fonte quando você tem que fazê-lo sozinho. Um divertido ler de qualquer maneira. Levou um total de 2 meses para compilar e executar alguns programas divertidos C que só precisa de free-standing C (com funções de leitura / gravação fictícios que escreveu para o simulador terminal).
Então, eu acho que a quantidade de trabalho é certamente manejável. O que me fez quase louco era scripts de construção de libgloss
. Eu certamente foi perdido naqueles magias autoconf :) De qualquer forma, desejo-lhe boa sorte! :)
Outras dicas
Verifique para fora Portando newlib .
Citação:
Eu decidi que depois de uma semana incrivelmente difícil de tentar obter newlib portado para o meu próprio sistema operacional que eu iria escrever um tutorial que descreve os requisitos para portar newlib e como realmente fazê-lo. Eu estou supondo que você já pode carregar binários de algum lugar e que esses binários são compilados código C. Eu também assumir que tem uma configuração de interface syscall já. Porque esperar? Vamos começar rachando!