Compilei o boost por este 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
Responder1
Aquilo ^M
é umretorno de carro. O Windows representa quebras de linha pelo retorno de carro de sequência de dois caracteres, avanço de linha (CRLF ou ^M^J
). Linux e outros dispositivos 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ê invoca sh
explicitamente, ele também trata o CR como um caractere comum, parte dos nomes dos comandos.
Isso é um sinal de que esses arquivos foram copiados de uma máquina Windows onde eram arquivos de texto. Você não pode copiar arquivos de texto diretamente entre máquinas Windows e Linux; você precisa converter os finais de linha. Provavelmente, você extraiu o arquivo no Windows e depois copiou os arquivos para o Linux. Em vez de fazer isso, extraia o arquivo no Linux.
No caso do Boost, a partir deversão 1.49.0, o arquivo é distribuído em quatro formatos:
- gzip e bzip2, com terminações de linha unix;
- zip e 7z, com terminações de linha do Windows.
A maneira mais fácil de compilar o Boost no Linux é usar o arquivo bzip2. Se você precisar trabalhar com o 7z, poderá usar comandos como dos2unix
ou sed -i -e 's/\r$//'
em todos os arquivos de texto para converter os finais de linha.