我正在尝试使用第三方开源C++静态库。我从项目的网站下载了归档文件,运行了./configure --disable-shared,然后运行了make、make test和make install。(我是一名UNIX新手,因此本文只是按照项目网站上的说明进行操作。)
在Xcode中,我将lib文件夹中的.a文件添加到Link Binary With Libraries下,将include文件夹添加到头搜索路径,并将-ObjC添加到其他链接器标志(尽管我不认为这一点很重要,因为该库是C++)。
当我尝试构建这个项目时,我收到了几个警告,比如
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和几个错误,比如
Undefined symbols for architecture i386:
"_CbcOrClpReadCommand", referenced from:
CoinReadNextField() in CbcOrClpParam.o我知道在Stack Overflow上有很多关于这个错误的线程,解决方案是在编译库时包含正确的架构(arm和i386)。但由于这是一个第三方库,所以我不会用Xcode编译它。在我上面列出的shell步骤中,有什么方法可以解决这个问题吗?
因为它是开源的,所以我可以得到源代码,但是我不知道如何构建这个库。
发布于 2014-07-27 09:37:21
如何构建取决于开源代码是如何编写的。但大多数库都使用配置参数来实现这一点。也许有一个参数看起来像./configure --arch i386,然后是make && make install。您应该在README或How to use文档中找到它。或者你最好去问作者。
编译后,可以使用lipo命令合并多个.a文件,然后再将其添加到项目中
lipo -create /path/to/one.a /path/to/another.a -output libOsiCbc.ahttps://stackoverflow.com/questions/24977061
复制相似问题