2012-01-05 20 views
0

このコマンドでMac OS X LionでLLVM 2.4をコンパイルしようとしました。Mac OS X Lionで32ビットモードでビルド

./configure --enable-pic --prefix=/usr/local CC="gcc -arch i386" CXX="g++ -arch i386"

私はこのエラーを得ました。

Undefined symbols for architecture i386: 
    "llvm::PATypeHolder::get() const", referenced from: 
     llvm::ELFWriter::EmitGlobal(llvm::GlobalVariable*) in libLLVMCodeGen.a(ELFWriter.o) 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

この問題は何ですか?

答えて

2

クロスコンパイルの場合、configureには、マシンタプルを使用してホスト、ターゲット、およびビルドを提供するときにそれが好きです。

あなたはあなたのマシンのタプルが何であるかをよく知らないなら、あなたはそれがライオンレポート使用して、

gcc -dumpmachine 

使用して見つけることができます。

i686-apple-darwin11 

注ライオンはx86_64-リンゴ-darwin11であることをしかし、それを使用するには、lvm:

./configure \ 
    --enable-pic \ 
    --prefix=/usr/local \ 
    --host=i686-apple-darwin11 \ 
    --target=i686-apple-darwin11 \ 
    --build=i686-apple-darwin11 

それはする必要がありますincludeしたい

--enable-languages=c,c++,obj-c 
--enable-optimized 

また、リンクしているライブラリを 'file'と 'otool'で確認することもできます。それはあなたがにリンクしている静的なアーカイブかどうか、(ケースになりそうだこれは...)私の急ごしらえのテストは

ar p somelib.a $(ar t somelib.a | grep \.o | tail -1) | file - 
あなたはi386のOSXライオンボックスに実行するつもりはない

、そうな建物ですi386用のclangは不要です - おそらく64ビット版(デフォルトで選択したもの)をビルドできますし、WITHでコンパイルするとCFLAGSまたはCXXFLAGSに '-m32'または '-m64'を指定してオブジェクトの正しいビット深度。

-n

+0

私は今i386 OSX Lionボックスで何かを構築しようとしています。 –

関連する問題