Cross-compiling e compilação distribuída para ARM: mudanças entre as edições
De Área31 Hackerspace
m Admin moveu a página Cross-compiling e compilação distribuída para ARM para KB:Cross-compiling e compilação distribuída para ARM sem deixar um redirecionamento |
Sem resumo de edição |
||
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
== Configure o Cross-Compiling no Gentoo/Funtoo == | == Configure o Cross-Compiling no Gentoo/Funtoo == | ||
Utilizaremos o overlay ambro-cross, visto que é bem estável. Mais infos: | Utilizaremos o overlay ambro-cross, visto que é bem estável. Mais infos: | ||
https://code.google.com/p/ambro-cross-overlay/wiki/Instructions | |||
=== Server/node cluster distcc (compilação distribuída) === | === Server/node cluster distcc (compilação distribuída) === | ||
Configure o ambiente para compilação cruzada: | Configure o ambiente para compilação cruzada: | ||
{{console|body= | |||
###i## cd /usr/local | |||
###i## svn checkout https://ambro-cross-overlay.googlecode.com/svn/trunk/ ambro-cross-overlay | |||
}} | |||
Adicione ao seu make.conf: | Adicione ao seu make.conf: | ||
{{file|name=/etc/make.conf|body= | |||
PORTDIR_OVERLAY=" | PORTDIR_OVERLAY=" | ||
/usr/local/portage-crossdev | /usr/local/portage-crossdev | ||
/usr/local/ambro-cross-overlay" | /usr/local/ambro-cross-overlay" | ||
}} | |||
=== Converta o diretório /etc/portage === | === Converta o diretório /etc/portage === | ||
==== Crie um script para converter o /etc/portage para o padrão de diretórios ==== | ==== Crie um script para converter o /etc/portage para o padrão de diretórios ==== | ||
{{console|body= | |||
###i## vi ~/convert-profile-to-files.sh | |||
}} | |||
{{file|name=~/convert-profile-to-files.sh|desc=Convert portage files script|body= | |||
#!/bin/bash | #!/bin/bash | ||
PROFILE_DIR="/etc/portage" | PROFILE_DIR="/etc/portage" | ||
Linha 43: | Linha 46: | ||
echo "Completed!" | echo "Completed!" | ||
}} | |||
==== Execute o script criado ==== | ==== Execute o script criado ==== | ||
{{console|body= | |||
###i## chmod +x ~/convert-profile-to-files.sh | |||
###i## bash ~/convert-profile-to-files.sh | |||
}} | |||
=== Instale o crossdev em seu servidor i686 ou x86_64 === | |||
Desmascare a última versão do crossdev: | |||
{{console|body= | |||
###i## echo "sys-devel/crossdev" >> /etc/portage/package.keywords/monolithic | |||
}} | |||
=== Construa a ferramenta de compilação cruzada === | === Construa a ferramenta de compilação cruzada === | ||
{{console|body= | |||
###i## mkdir /usr/local/portage-crossdev | |||
}} | |||
==== Raspberry Pi ==== | |||
Compile o ambiente '''armv6j-hardfloat-linux-gnueabi''' usando o crossdev: | Compile o ambiente '''armv6j-hardfloat-linux-gnueabi''' usando o crossdev: | ||
{{console|body= | |||
###i## crossdev --ov-output /usr/local/portage-crossdev --stable armv6j-hardfloat-linux-gnueabi | |||
}} | |||
ou | |||
{{console|body= | |||
###i## crossdev --stable armv6j-hardfloat-linux-gnueabi --gcc 4.8.1-r3 --libc 2.15-r4 --binutils 2.22-r1 | |||
}} | |||
==== Cubieboard2 ==== | |||
Compile o ambiente '''armv7a-hardfloat-linux-gnueabi''' usando o crossdev: | |||
{{console|body= | |||
###i## crossdev --ov-output /usr/local/portage-crossdev --stable armv7a-hardfloat-linux-gnueabi | |||
}} | |||
ou | |||
{{console|body= | |||
###i## crossdev --stable armv7a-hardfloat-linux-gnueabi --gcc 4.6.2-r1 --libc 2.15-r4 --binutils 2.21.1-r1 | |||
}} | |||
== Prepare o ambiente == | |||
Configure o arquivo de configuração do distccd conforme exemplo abaixo: | |||
{{console|body= | |||
###i## vi /etc/conf.d/distccd | |||
}} | |||
{{file|name=/etc/conf.d/distccd|desc=config do distccd|body= | |||
DISTCCD_OPTS="-j2" | |||
DISTCCD_EXEC="/usr/bin/distccd" | |||
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} -N 15" | |||
}} | |||
Exporte as variáveis do distcc: | |||
{{console|body= | |||
export DISTCCD_OPTS="-j2" | |||
export DISTCCD_EXEC="/usr/bin/distccd" | |||
export DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} -N 15" | |||
}} | |||
Exporte as variáveis de definição dos nós do cluster: | |||
{{console|body= | |||
###i## export DISTCC_HOSTS="192.168.254.254" | |||
}} | |||
ou | |||
{{console|body= | |||
###i## export DISTCC_HOSTS="localhost 192.168.254.254" | |||
}} | |||
Acesse o diretório desejado: | |||
{{console|body= | |||
###i## cd /opt/project | |||
###i## nohup make CC="distcc gcc" -j4 > /root/nohup.make & | |||
}} | |||
ou | |||
{{console|body= | |||
###i## nohup make CC="distcc armv6j-hardfloat-linux-gnueabi-gcc" -j2 > /root/nohup.make & | |||
}} | |||
== Instale o projeto == | |||
{{console|body= | |||
###i## make install && make modules_install | |||
}} | |||
Seja feliz! :D | |||
[[Categoria:Embarcados]] | |||
[[Categoria:SoftwareOpensource]] | [[Categoria:SoftwareOpensource]] | ||
[[Categoria:Linux]] | [[Categoria:Linux]] | ||
[[Categoria:KnowledgeBase]] | [[Categoria:KnowledgeBase]] |
Edição atual tal como às 12h00min de 5 de fevereiro de 2019
Configure o Cross-Compiling no Gentoo/Funtoo
Utilizaremos o overlay ambro-cross, visto que é bem estável. Mais infos:
https://code.google.com/p/ambro-cross-overlay/wiki/Instructions
Server/node cluster distcc (compilação distribuída)
Configure o ambiente para compilação cruzada:
root # cd /usr/local root # svn checkout https://ambro-cross-overlay.googlecode.com/svn/trunk/ ambro-cross-overlay
Adicione ao seu make.conf:
/etc/make.conf
PORTDIR_OVERLAY="
/usr/local/portage-crossdev
/usr/local/ambro-cross-overlay"
Converta o diretório /etc/portage
Crie um script para converter o /etc/portage para o padrão de diretórios
root # vi ~/convert-profile-to-files.sh
~/convert-profile-to-files.sh
- Convert portage files script#!/bin/bash
PROFILE_DIR="/etc/portage"
if [ ! -e ${PROFILE_DIR} ]; then
mkdir ${PROFILE_DIR};
fi;
for PACK_DIR in package.accept_keywords package.keywords package.use package.unmask package.mask; do
CUR_DIR="${PROFILE_DIR}/${PACK_DIR}"
if [ ! -e ${CUR_DIR} ]; then
mkdir ${CUR_DIR}
fi
if [ -e ${CUR_DIR} -a ! -d ${CUR_DIR} ]; then
mv ${CUR_DIR} ${CUR_DIR}.moving
mkdir ${CUR_DIR}
mv ${CUR_DIR}.moving ${CUR_DIR}/monolithic
fi
done
echo "Completed!"
Execute o script criado
root # chmod +x ~/convert-profile-to-files.sh root # bash ~/convert-profile-to-files.sh
Instale o crossdev em seu servidor i686 ou x86_64
Desmascare a última versão do crossdev:
root # echo "sys-devel/crossdev" >> /etc/portage/package.keywords/monolithic
Construa a ferramenta de compilação cruzada
root # mkdir /usr/local/portage-crossdev
Raspberry Pi
Compile o ambiente armv6j-hardfloat-linux-gnueabi usando o crossdev:
root # crossdev --ov-output /usr/local/portage-crossdev --stable armv6j-hardfloat-linux-gnueabi
ou
root # crossdev --stable armv6j-hardfloat-linux-gnueabi --gcc 4.8.1-r3 --libc 2.15-r4 --binutils 2.22-r1
Cubieboard2
Compile o ambiente armv7a-hardfloat-linux-gnueabi usando o crossdev:
root # crossdev --ov-output /usr/local/portage-crossdev --stable armv7a-hardfloat-linux-gnueabi
ou
root # crossdev --stable armv7a-hardfloat-linux-gnueabi --gcc 4.6.2-r1 --libc 2.15-r4 --binutils 2.21.1-r1
Prepare o ambiente
Configure o arquivo de configuração do distccd conforme exemplo abaixo:
root # vi /etc/conf.d/distccd
/etc/conf.d/distccd
- config do distccdDISTCCD_OPTS="-j2"
DISTCCD_EXEC="/usr/bin/distccd"
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"
DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632"
DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical"
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24"
DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"
Exporte as variáveis do distcc:
export DISTCCD_OPTS="-j2" export DISTCCD_EXEC="/usr/bin/distccd" export DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" export DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" export DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" export DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" export DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"
Exporte as variáveis de definição dos nós do cluster:
root # export DISTCC_HOSTS="192.168.254.254"
ou
root # export DISTCC_HOSTS="localhost 192.168.254.254"
Acesse o diretório desejado:
root # cd /opt/project root # nohup make CC="distcc gcc" -j4 > /root/nohup.make &
ou
root # nohup make CC="distcc armv6j-hardfloat-linux-gnueabi-gcc" -j2 > /root/nohup.make &
Instale o projeto
root # make install && make modules_install
Seja feliz! :D