Linux Impulsione compilação

2

Eu compilei o boost com esse método no Windows:

Go to the directory tools/build/v2/.
Run bootstrap.sh
Run b2 install --prefix=PREFIX where PREFIX is the directory where you want Boost.Build to be installed
Add PREFIX/bin to your PATH environment variable.

E estava funcionando. Agora estou tentando isso no Linux e isso não acontece. Eu tenho a seguinte situação:

kron@kron:~/Software/Sources/boost_1_49_0/tools/build/v2$ ./bootstrap.sh 
bash: ./bootstrap.sh: /bin/sh^M: bad interpreter: No such file or directory
kron@kron:~/Software/Sources/boost_1_49_0/tools/build/v2$ sh bootstrap.sh 
: not foundh: 8: 
: not foundh: 10: 
: not foundh: 14: 
bootstrap.sh: 15: Syntax error: Bad for loop variable
kron@kron:~/Software/Sources/boost_1_49_0/tools/build/v2$ ls -l
total 224
-rw-r--r--  1 kron kron   271 Nov  5  2006 boost-build.jam
-rw-r--r--  1 kron kron  7437 Nov  9  2008 boost_build.png
-rw-r--r--  1 kron kron  7169 Jan 14  2009 boost_build.svg
-rw-r--r--  1 kron kron   842 Nov  5  2006 boost.css
-rw-r--r--  1 kron kron  1088 Jun  6  2011 bootstrap.bat
-rw-r--r--  1 kron kron   778 Oct 29  2003 bootstrap.jam
-rwxr-xr-x  1 kron kron  2737 Jun  6  2011 bootstrap.sh
drwx------  2 kron kron  4096 Feb 22 18:28 build
-rw-r--r--  1 kron kron 36462 Jun  6  2011 build-system.jam
    
por itun 06.04.2012 / 02:20

1 resposta

3

Esse ^M é um retorno de carro . Windows representa quebras de linha pelo retorno de carro de seqüência de dois caracteres, alimentação de linha (CRLF ou ^M^J ). Linux e outros unices usam o caractere único LF. Este CR é tratado como um caractere comum, então o kernel procura por um interpretador chamado /bin/sh␍ em vez de /bin/sh . Quando você invocou sh explicitamente, ele também tratou o CR como um caractere comum, parte dos nomes dos comandos.

Este é um sinal de que esses arquivos foram copiados de uma máquina Windows onde eram arquivos de texto. Você não pode copiar diretamente arquivos de texto entre máquinas Windows e Linux, você precisa converter os finais de linha. É provável que você tenha extraído o arquivo no Windows e copiado os arquivos para o Linux. Em vez de fazer isso, extraia o arquivo no Linux.

No caso do Boost, a partir da versão 1.49.0 , o arquivo é distribuído em quatro formatos:

  • gzip e bzip2, com finais de linha unix;
  • zip e 7z, com finais de linha do Windows.

A maneira mais fácil de compilar o Boost no Linux é usar o arquivo bzip2. Se você precisa trabalhar com o 7z, pode usar comandos como dos2unix ou sed -i -e 's/\r$//' em todos os arquivos de texto para converter os finais de linha.

    
por 06.04.2012 / 02:26