Por que o GCC parou de funcionar?

0

Eu segui este tutorial que mostra como você pode ativar o compilador GCC no ChromeOS, que usa os seguintes comandos abaixo.

sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 2
sudo mount -i -o remount,exec /home/chronos/user/
export C_INCLUDE_PATH=~/Toolchain/usr/include/
export LD_LIBRARY_PATH=~/Toolchain/usr/lib:~/Toolchain/usr/lib/binutils/armv7a-hardfloat-linux-gnueabi/2.25.1/
export PATH=$PATH:~/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/4.9.3/:~/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.25.1/
sudo sed -i 's/\/usr/\/home\/chronos\/user\/Toolchain\/usr/g' ~/Toolchain/usr/lib/libc.so

Uma vez executado, eu sou capaz de compilar arquivos de código-fonte até a instância do shell terminar. Depois que eu retornar ao shell mais tarde, todas as tentativas de compilação de origem via ./configure falharão.

Eu suspeitava que as variáveis exportadas se perdessem após o término da instância. Eu tento implementar os mesmos comandos exatamente como antes, mas a capacidade de compilar parece irrevogavelmente perdida.

O fluxo config.log apresenta o seguinte erro:

configure:3378: checking whether the C compiler works
configure:3400: gcc    conftest.c  >&5
/home/chronos/user/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.25.1/ld: cannot find /home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/usr/lib/libc_nonshared.a
collect2: error: ld returned 1 exit status
configure:3404: $? = 1
configure:3442: result: no

Algo realmente peculiar acontece com o caminho ...

cannot find /home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/usr/lib/libc_nonshared.a

Sinto que esgotei meu conhecimento limitado do Linux para resolver esse problema. Alguém é capaz de fornecer algumas dicas sobre o que está acontecendo?

    
por Mapsy 18.10.2016 / 14:21

1 resposta

1

O problema é que, quando você usa repetidamente sed dessa maneira, continua anexando ao arquivo de objeto compartilhado ~/Toolchain/usr/lib/libc.so . Então, após a primeira execução, isso corrompe o caminho do arquivo.

Se o seu caminho estiver corrompido, navegue até o arquivo e altere manualmente o conteúdo de libc.so para o seguinte:

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-littlearm)

GROUP ( /lib/libc.so.6 /home/chronos/user/Toolchain/usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux-armhf.so.3 ) )

O problema é que, quando o shell foi fechado, é importante que, se você desejar continuar compilando depois de retornar, será necessário executar novamente as export flags, já que estas do se perdem. Você precisa fazer isso até procurar uma solução mais permanente que estabeleça os sinalizadores na inicialização do shell, ou seja, por meio de ~/.bashrc .

    
por 18.10.2016 / 15:26