Compilación de Linux Boost

Compilación de Linux Boost

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 ^Mes 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 shexplí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 dos2unixo sed -i -e 's/\r$//'en todos los archivos de texto para convertir los finales de línea.

información relacionada