首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接到第三方静态库:“文件是为不是要链接的体系结构的归档构建的(i386)”

链接到第三方静态库:“文件是为不是要链接的体系结构的归档构建的(i386)”
EN

Stack Overflow用户
提问于 2014-07-27 09:24:05
回答 1查看 176关注 0票数 1

我正在尝试使用第三方开源C++静态库。我从项目的网站下载了归档文件,运行了./configure --disable-shared,然后运行了makemake testmake install。(我是一名UNIX新手,因此本文只是按照项目网站上的说明进行操作。)

在Xcode中,我将lib文件夹中的.a文件添加到Link Binary With Libraries下,将include文件夹添加到头搜索路径,并将-ObjC添加到其他链接器标志(尽管我不认为这一点很重要,因为该库是C++)。

当我尝试构建这个项目时,我收到了几个警告,比如

代码语言:javascript
复制
ld: warning: ignoring file /Users/<my name>/Dropbox/Computing/COIN-OR/Cbc-2.8.10/lib/libOsiCbc.a, 
file was built for archive which is not the architecture being linked (i386): 
/Users/<my name>/Dropbox/Computing/COIN-OR/Cbc-2.8.10/lib/libOsiCbc.a

和几个错误,比如

代码语言:javascript
复制
Undefined symbols for architecture i386:
"_CbcOrClpReadCommand", referenced from:
  CoinReadNextField() in CbcOrClpParam.o

我知道在Stack Overflow上有很多关于这个错误的线程,解决方案是在编译库时包含正确的架构(arm和i386)。但由于这是一个第三方库,所以我不会用Xcode编译它。在我上面列出的shell步骤中,有什么方法可以解决这个问题吗?

因为它是开源的,所以我可以得到源代码,但是我不知道如何构建这个库。

EN

回答 1

Stack Overflow用户

发布于 2014-07-27 09:37:21

如何构建取决于开源代码是如何编写的。但大多数库都使用配置参数来实现这一点。也许有一个参数看起来像./configure --arch i386,然后是make && make install。您应该在READMEHow to use文档中找到它。或者你最好去问作者。

编译后,可以使用lipo命令合并多个.a文件,然后再将其添加到项目中

代码语言:javascript
复制
lipo -create /path/to/one.a /path/to/another.a -output libOsiCbc.a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24977061

复制
相关文章

相似问题

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