首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mac OS X Lion上使用32位模式构建

在Mac OS X Lion上使用32位模式构建
EN

Stack Overflow用户
提问于 2012-01-05 13:37:11
回答 1查看 4.8K关注 0票数 0

我尝试用这个命令在Mac OS X Lion上编译LLVM2.4。

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

我得到了这个错误。

代码语言:javascript
运行
复制
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

这有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2012-01-05 16:57:05

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

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

代码语言:javascript
运行
复制
gcc -dumpmachine

它使用Lion reports:

代码语言:javascript
运行
复制
i686-apple-darwin11

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

代码语言:javascript
运行
复制
./configure \
     --enable-pic \
     --prefix=/usr/local \
     --host=i686-apple-darwin11 \
     --target=i686-apple-darwin11 \
     --build=i686-apple-darwin11

这应该可以做到这一点,但是您可能希望包括

代码语言:javascript
运行
复制
--enable-languages=c,c++,obj-c
--enable-optimized 

您还可以使用'file‘和'otool’验证您正在链接的库。或者,如果您正在链接的是一个静态归档文件(看起来就是这样)我的快速测试是

代码语言:javascript
运行
复制
 ar p somelib.a $(ar t somelib.a | grep \.o | tail -1) | file -

你不会遇到i386 OSX Lion box,所以为i386构建clang似乎没有必要-你可以构建64位版本(无论它默认选择什么),然后当你用它编译时,你可以在你的CFLAGS或CXXFLAGS中指定'-m32‘或'-m64’来生成正确的对象位深度。

-n

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8738143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档