Linux Boost-Kompilierung

Linux Boost-Kompilierung

Ich habe Boost unter Windows mit dieser Methode kompiliert:

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.

Und es hat funktioniert. Jetzt versuche ich es unter Linux und es funktioniert nicht. Ich habe folgende Situation:

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

Antwort1

Das ^Mist einWagenrücklauf. Windows stellt Zeilenumbrüche durch die zweistellige Folge „Carriage Return, Line Feed“ (CRLF oder ^M^J) dar. Linux und andere Unix-Systeme verwenden das einzelne Zeichen LF. Dieses CR wird als normales Zeichen behandelt, daher sucht der Kernel nach einem Interpreter namens /bin/sh␍anstelle von /bin/sh. Wenn Sie es shexplizit aufgerufen haben, behandelte es das CR ebenfalls als normales Zeichen, das Teil von Befehlsnamen ist.

Dies ist ein Zeichen dafür, dass diese Dateien von einem Windows-Rechner kopiert wurden, auf dem es sich um Textdateien handelte. Sie können Textdateien nicht direkt zwischen Windows- und Linux-Rechnern kopieren, Sie müssen die Zeilenenden konvertieren. Wahrscheinlich haben Sie das Archiv unter Windows extrahiert und die Dateien dann nach Linux kopiert. Entpacken Sie das Archiv stattdessen unter Linux.

Im Falle von BoostVersion 1.49.0Das Archiv wird in vier Formaten verteilt:

  • gzip und bzip2, mit Unix-Zeilenenden;
  • zip und 7z, mit Windows-Zeilenenden.

Der einfachste Weg, Boost unter Linux zu kompilieren, ist die Verwendung des bzip2-Archivs. Wenn Sie mit 7z arbeiten müssen, können Sie Befehle wie dos2unixoder sed -i -e 's/\r$//'auf alle Textdateien anwenden, um die Zeilenenden zu konvertieren.

verwandte Informationen