Linux Boost コンパイル

Linux Boost コンパイル

私はWindows上でこの方法でboostをコンパイルしました:

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.

そして、それは機能していました。今、私はこれを Linux で試していますが、機能しません。次のような状況です。

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

答え1

あれ^Mキャリッジリターン. Windows では、改行は 2 文字のシーケンスである復帰改行 (CRLF または^M^J) で表されます。Linux およびその他の Unix では、1 文字の LF が使用されます。この CR は通常の文字として扱われるため、カーネルは/bin/sh␍の代わりに と呼ばれるインタープリターを探します/bin/sh。明示的に呼び出された場合sh、CR もコマンド名の一部である通常の文字として扱われます。

これは、それらのファイルがテキスト ファイルであった Windows マシンからコピーされたことを示しています。Windows マシンと Linux マシン間でテキスト ファイルを直接コピーすることはできません。行末を変換する必要があります。おそらく、Windows でアーカイブを抽出してから、ファイルを Linux にコピーしたのでしょう。そうする代わりに、Linux でアーカイブを抽出してください。

Boostの場合、バージョン 1.49.0アーカイブは次の 4 つの形式で配布されます。

  • gzip および bzip2(Unix 行末付き)
  • Windows の行末を持つ zip および 7z。

Linux で Boost をコンパイルする最も簡単な方法は、bzip2 アーカイブを使用することです。7z で作業する必要がある場合は、すべてのテキスト ファイルでdos2unixまたはなどのコマンドを使用しsed -i -e 's/\r$//'て行末を変換できます。

関連情報