Macos 在Mac OS X Lion上构建32位模式

Macos 在Mac OS X Lion上构建32位模式,macos,gcc,osx-lion,llvm,Macos,Gcc,Osx Lion,Llvm,我试图用这个命令在MacOSXLion上编译LLVM2.4 /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(llv

我试图用这个命令在MacOSXLion上编译LLVM2.4

/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

这个怎么了

对于交叉编译,当您使用machine元组提供主机、目标和构建时,configure喜欢它

如果您不熟悉机器元组是什么,可以使用

gcc -dumpmachine
其中,使用Lion报告:

i686-apple-darwin11
请注意,在Lion x86_64-apple-darwin11上,64位有效。。但是,要在构建llvm时使用它:

./configure \
     --enable-pic \
     --prefix=/usr/local \
     --host=i686-apple-darwin11 \
     --target=i686-apple-darwin11 \
     --build=i686-apple-darwin11
这应该可以做到,但您可能希望包括

--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 Lion box,因此为i386构建clang似乎是不必要的-您可能可以构建64位版本(默认情况下选择的任何版本),然后在使用该版本编译时,您可以在CFLAGS或cxflags中指定“-m32”或“-m64”以生成正确的对象位深度


-n

我现在正试图在i386 OSX Lion box上构建一些东西。