O Debian agora inclui os cross-toolchains oficialmente, embora eles não façam parte da próxima versão estável (8.0). Pacotes virtuais são fornecidos .
Eu tentei instalar um toolchain cruzado para poder criar o kernel do Linux
amd64 (teste Debian "jessie") para o meu sistema ARM. Eu tenho esta entrada em sources.list
:
deb http://www.emdebian.org/debian sid main
Quando tentei instalar o gcc-4.7-arm-linux-gnueabi , recebi um erro:
cc-4.7-arm-linux-gnueabi : Depends: libgomp1-armel-cross (>=4.7.2-5) but it is not going to be installed
libgomp1-armel-cross por sua vez depende do gcc-4.8-base-armel-cross que não está disponível em nenhum lugar.
Em algum momento, eu consegui instalar essas ferramentas cross-build do mesmo repositório, e até mesmo construí um kernel que agora roda nesses sistemas ARM algumas semanas atrás. Há algo quebrado nesse repositório? Tentei algumas outras versões do GCC e ainda recebo o mesmo problema.
Uma solução não ideal é a construção cruzada em uma VM Ubuntu 12.04. A distro tem o compilador cruzado ARM disponível em seus repositórios oficiais.
O Debian agora inclui os cross-toolchains oficialmente, embora eles não façam parte da próxima versão estável (8.0). Pacotes virtuais são fornecidos .
Recomenda-se que repositórios Emdebian sejam usados em stable
na maioria das vezes, pois pode haver utilitários não construídos nos repositórios, pacotes que foram retirados etc. Se você deseja garantir que todas as suas bibliotecas tenham as dependências corretas Eu sugeriria stable
ou testing
, pois eles são menos propensos a ter algum problema de dependência ou ter algo que seja borkeado.
Estável não ajuda. A inconsistência de 4.7 - 4.8 ainda está lá. A inconsistência já existia para mim desde (em torno de) versão 4.4 de gcc
.
Eu sugeriria fazer as coisas no "modo Linux", o que significa para mim, quanto menos configuração automática possível. Gostaria de baixar o conjunto de ferramentas necessário do site do distribuidor e definir um arquivo .CC no diretório de trabalho do seu projeto. Seu arquivo CC deve ser parecido com isto:
export PATH=< PATH-TO-TOOLCHAIN-BIN-FOLDER>:${PATH}
export CROSS_COMPILE=< TOOLCHAIN PREFIX' i.e "arm-none-gnueabi-" (the last "-" is important)
export ARCH=< ARCHITECTURE>
Depois de fazer isso, antes de executar qualquer compilação, emita "source .CC" e depois compile como faz normalmente, por exemplo, "gcc / g ++ / ld ... ...". A compilação irá usar automaticamente o toolchain (você vai ver na saída da compilação, que o toolchain está sendo usado)