Compilé boost con este método en 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.
Y estaba funcionando. Ahora estoy probando esto en Linux y no es así. Tengo la siguiente situación:
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
Respuesta1
Eso ^M
es unretorno de carro. Windows representa saltos de línea mediante la secuencia de dos caracteres de retorno de carro, avance de línea (CRLF o ^M^J
). Linux y otros Unices utilizan el carácter único LF. Este CR se trata como un carácter normal, por lo que el núcleo busca un intérprete llamado /bin/sh␍
en lugar de /bin/sh
. Cuando lo invocaste sh
explícitamente, también trató el CR como un carácter ordinario, parte de los nombres de los comandos.
Esta es una señal de que esos archivos se copiaron desde una máquina con Windows donde eran archivos de texto. No puede copiar archivos de texto directamente entre máquinas Windows y Linux, necesita convertir los finales de línea. Lo más probable es que haya extraído el archivo en Windows y luego haya copiado los archivos en Linux. En lugar de hacer eso, extraiga el archivo en Linux.
En el caso de Boost, a partir deversión 1.49.0, el archivo se distribuye en cuatro formatos:
- gzip y bzip2, con terminaciones de línea Unix;
- zip y 7z, con finales de línea de Windows.
La forma más sencilla de compilar Boost en Linux es utilizar el archivo bzip2. Si debe trabajar con el 7z, puede usar comandos como dos2unix
o sed -i -e 's/\r$//'
en todos los archivos de texto para convertir los finales de línea.