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 ^M
ist 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 sh
explizit 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 dos2unix
oder sed -i -e 's/\r$//'
auf alle Textdateien anwenden, um die Zeilenenden zu konvertieren.