Linuxブーストのコンパイル

Linuxブーストのコンパイル

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またはCRLF ^M^J)で表します。 Linux やその他の Unix は単一文字の LF を使用します。このCRは通常の文字として扱われるため、カーネルは代わりに名前/bin/sh␍のインタプリタを探します/bin/sh。また、CRをプレーン文字として扱い、明示的に呼び出すときのコマンド名の一部ですsh

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

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

  • Unix行の終わりを持つgzipとbzip2。
  • zipと7z(Windows行末を含む)

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

関連情報