Compilação cruzada de libSDL

1

Eu estou tentando cross-compilar a versão 1.2 da libSDL para um sistema Linux customizado baseado no Debian. A toolchain que estou usando já está configurada corretamente para que eu execute apenas gcc / g++ no código desejado e a saída resultante seja compatível com a máquina de destino.

Quando executo ./configure --help no diretório de origem libSDL, vejo que basicamente posso definir algumas variáveis de ambiente para apontar para o meu compilador cruzado.

No entanto, também vejo as seguintes opções:

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Analisei os arquivos configure.in , build-scripts/config.sub e build-scripts/config.guess , mas não consegui descobrir como funciona.

Essas opções são necessárias? Se não, é uma boa ideia usá-los?

    
por s g 20.12.2013 / 01:24

2 respostas

0

A resposta é "sim", devo especificar os dois. A --build flag será a arquitetura da máquina que faz a compilação ... os scripts podem fazer um bom trabalho de adivinhar o que isso será, mas é melhor prevenir do que remediar e realmente especificar-se. A --host flag é a parte necessária para fazer com que essa compilação cruzada realmente funcione. Quando meus sinalizadores --build e --host não eram os mesmos valores (por exemplo, i686-genérico versus x86_64-linux), os scripts de configuração perceberiam que estou tentando cruzar a compilação.

Em vez de simplesmente recorrer ao compilador local (na máquina host, especificado em algum lugar em $ PATH), os scripts de configuração localizariam um conjunto de compiladores (compilador, vinculador, etc.) especificado como sinalizadores ou variáveis de ambiente (por exemplo, $ CPPFLAGS, $ CC, $ AR, etc.) e usá-los.

    
por 21.10.2014 / 00:00
0

--build=BUILD - é o sistema no qual o compilador compilado deve ser executado. Isso é apenas para construir um compilador cruzado na arquitetura A que será executado na arquitetura B e produzirá o código para a arquitetura C.

--host=HOST - é o sistema onde a compilação acontece

--target=TARGET - é o sistema que os binários compilados vão rodar em

Ver, por exemplo, esta introdução de compilação cruzada .

    
por 20.12.2013 / 18:40