Cstdintを利用するアプリケーションをコンパイルしようとしています。 Appleはgccを非推奨にしたので、clangでコンパイルしてみたかったのですが、エラーが発生します:
fatal error: 'cstdint' file not found
Gcc4.6.2バージョンにはライブラリを含めるための-std=c++0x
のオプションがあることは知っていますが、os xバージョンは4.2なので、ここではあまりオプションではありません。私が前進する方法について何か提案はありますか? 4.6.2をインストールしようとしましたが、gccをビルドする前に必要なライブラリのいくつかをコンパイルするときにさまざまな問題が発生しました。
おそらく、このアプリケーションのソースコードがあるので、Clang 3.0(Lionのツールに付属)にヘッダーがあるので、ヘッダーを変更して正しいcstdint
ヘッダーを含めることができます。
ヘッダーはtr1
ディレクトリの下にあるため、次のいずれかを実行する必要があります。
#include <tr1/cstdint>
または
#include <stdint.h> // which will use the C99 header
私が覚えているので、いくつかの追加の読み取りを行った後、tr1ディレクトリなしでこれを行うことができます:
デフォルトでは、/usr/include/c++/4.2.1
のC++ヘッダーをインクルードします。これはGNU GCCヘッダーです。/usr/include/c++/4.2.1/tr1
にはcstdint
。
別の方法は、Clang ++フロントエンドを使用してコンパイルし、-stdlib=libc++
フラグを渡すことです。これにより、ClangのC++ヘッダー実装である/usr/include/c++/v1
のヘッダーが使用されます。 cstdint
があります。
例:
// file called example.cxx
#include <tr1/cstdint>
int main() {
// whatever...
}
これをコンパイルします:
g++ example.cxx
または
clang++ example.cxx
そしてそれはあなたが望むことをするでしょう。
tr1
バージョンを使用したくない場合(正確ではないにしても、ほぼ同じです):
// file called example.cxx
#include <cstdint>
int main() {
// stuff
}
これは次のようにコンパイルされます。
clang++ -stdlib=libc++ example.cxx
-stdlib=libc++
を使用する場合でも、GCCのlibc++
ではなく、ClangのC++ライブラリlibstdc++
にリンクしていることを意味します。