
uname -r
カーネル バージョン 2.6.18-92.1.13.el5 (から) と 2016 Intel C++ コンパイラを搭載した Linux システムで、gcc 6.1.0 を使用して最新の boost ライブラリ (1.62.0) をコンパイルしようとしています。
新しい Intel C++ コンパイラと gcc は、ホーム ディレクトリのサブ ディレクトリにインストールされています。私は、おそらくカーネルと同じくらい古い古い glibc を使用しています ( ldd --version
) ldd (GNU libc) 2.5
。
スレッド モジュールで次のエラーが発生します。
In file included from libs/log/src/event.cpp(31):
/usr/include/linux/futex.h(96): error: identifier "u32" is undefined
long do_futex(u32 *uaddr, int op, u32 val, unsigned long timeout,
^
それがコンパイル全体における唯一のエラーです。
ルートアクセス権がないため、コンピューターに新しいカーネルをインストールできません。
最新の Linux ヘッダーをインストールするのは良い考えでしょうか? そうすれば、エラーなしで boost 1.62.0 をインストールできるようになりますか?
答え1
最初の参考文献で次のことが分かりました。
CentOS 5.2 には Boost 1.33.1 が付属しています
このハック的なアプローチを主張するなら、アーカイブされたバージョンをブーストする、バージョン 1.33.1 を探します。ただし、リリース日には注意してください。
バージョン 1.33.1
2006 年 12 月 5 日 12:00 GMT
yum 経由でインストールするはずのバージョンをダウンロードした後、ホーム ディレクトリにビルドします。 GCCのバージョンをアップグレードしないでくださいシステムの古さにより、インストールしようとしているツールは古いツールチェーンの古さによって制限されます。
パッケージマネージャを備えたシステムでは、パッケージマネージャは決して無効にしないでくださいOSのアップグレードを検討してください。受け入れられた回答はこちらカーネルをアップグレードするまでヘッダー ファイルをアップグレードしないでください。また、 が復元されるまでカーネルをアップグレードすることはできませんyum
。