引入第三方cURL 报错解决办法

1:ld: ‘/Users/qiuy/Desktop/cardionNet2/cardionNet2/curl/lib/libssl.a(s2_meth.o)‘ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file

Bitcode的介绍

查阅了一下官方文档,在App

Distribution Guide–App Thinning (iOS, watchOS)一节中,找到了下面这样一个定义:

Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Connect that contain bitcodewill be compiled and linked on the App Store. Including bitcode will allowApple to re-optimize your app binary in the future without the need to submit anew version of your app to the store.

说的是bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化程序的二进制文件,而不需要重新提交一个新的版本到App store上。

而在What’s New in Xcode-New Features in Xcode 7中,还有一段如下的描述:

Bitcode. When you archive for submission tothe App Store, Xcode will compile your app into an intermediate representation.The App Store will then compile the bitcode down into the 64 or 32 bitexecutables as necessary.

当提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个botcode编译为可执行的64位或32位程序。

再看看这两段描述,都是放在App Thinning(App瘦身)一节中,可以看出其与包的优化有关了。

Bitcode配置

在上面的错误提示中,提到了如何处理我们遇到的问题:

You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64

要么让第三方库支持,要么关闭target的bitcode选项。

实际上,在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。

对于iOS,bitcode是可选的;对于watchOS,bitcode是必须的;而Mac OS是不支持bitcode。

如果我们开启了bitcode,在提交包时,下面这个界面也会有个bitcode选项:

所以,如果我们的工程需要支持bitcode,则必要要求所有引入的第三方库都支持bitcode。

链接:http://www.jianshu.com/p/5cac941c72a1

2:

Undefined symbols for architecture arm64:
"_inflate", referenced from:
_inflate_stream in libcurl.a(libcurl_la-content_encoding.o)
"_inflateEnd", referenced from:
_inflate_stream in libcurl.a(libcurl_la-content_encoding.o)
_exit_zlib in libcurl.a(libcurl_la-content_encoding.o)
"_inflateInit2_", referenced from:
_inflate_stream in libcurl.a(libcurl_la-content_encoding.o)
_gzip_init_writer in libcurl.a(libcurl_la-content_encoding.o)
"_inflateInit_", referenced from:
_deflate_init_writer in libcurl.a(libcurl_la-content_encoding.o)
"_zlibVersion", referenced from:
_curl_version in libcurl.a(libcurl_la-version.o)
_curl_version_info in libcurl.a(libcurl_la-version.o)
_gzip_init_writer in libcurl.a(libcurl_la-content_encoding.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决办法:

解决方法:

加入库:libz.dylib

该库的解释:

1. .dylib意味着这是一个动态链接库.

2. libz.dylib是提供zip压缩解压缩的库

3. 库的接口请#import "zlib.h"

参照:http://blog.csdn.net/yinqiangqiang/article/details/50041061

时间: 2024-08-01 02:44:19

引入第三方cURL 报错解决办法的相关文章

使用Android Studio打开eclipse项目以及打开网上下载的studio项目报错解决办法

第一次使用markdown来写博客,不熟悉使用markdown用法的可以参考视频教程(http://edu.csdn.net/course/detail/508/) 下面来介绍一下标题的题目,之前刚接触Android Studio也是一头雾水,在此写下来和大家分享:] (一) . Andriod Studio下载网址:http://www.androiddevtools.cn/(好多最新开发工具)可以找到最新的稳定版本的zip压缩包,解压后就可以直接用,关联之前本地的SDK即可. (二). St

PHP多次调用Mysql存储过程报错解决办法

PHP多次调用Mysql数据库的存储过程会出现问题,主要问题为存储过程中执行多次SQL语句不能一一释放导致的,网上找了一些解决办法,比如使用 multi_query 然后一个一个释放,但是发现根本不适合我们的项目,我们使用CI框架写的,更多的是使用CI的数据库处理方法.所以只能另辟蹊径. 一次偶然,把Mysql链接方式改成了mysqli,两种不同的PHP连接mysql的扩展,官方在高版本中推荐使用mysqli,结果却奇迹般好了,使用Mysql长连接也行,天意么? PHP多次调用Mysql存储过程

jsp页面中onsubmit="return checklogin();"报错解决办法

选择Window->Preferences->MyEclipse->Validation 去掉方框里的对号,然后Apply 然后点击Yes->然后再点击ok->Yes,就好了,如果你打开了那个出现错误jsp页面的话,请关掉重现打开就ok啦 jsp页面中onsubmit="return checklogin();"报错解决办法,布布扣,bubuko.com

dl380G8安装windows 2008R2 报错解决办法。

dl380安装windows2008R2时报错,安装包是我一直在用的安装包.我用光盘.优盘还是ILO安装都是报同样的错误.详细错误如下: 1.在复制完系统后重启安装时报下面的错误.我点击确定后系统会重启. windows cannot read the <productkey>setting from the unattend answer file 2.重启后报下面的错误,然后是不停的重启. 原因:是因为HP Intelligent Provisioning版本1.6都存在这个问题. 解决办

C-FREE5 出现 ld.exe报错 解决办法

因为入门是接触了C free,发现是蛮不错的一个IDE,但是用了很久一段时间之后,安装了MinGW发现不能用了.. 出问题之后换用了sublime text顶替了一段时间,今天闲着无聊,修理了下c-free,发现网上出同类问题的人还是蛮多的,现把问题及答案留在这里, 如果没能帮到你还请原谅 ^_^ 状况1:正常运行程序时偶尔会冒出ld.exe,如图: 此处强调的出现频率是 偶尔 ,素以具体报什么错已经记不清了,但是解决方法是这样的,ctrl+alt+delete,蓝后点任务管理器, 蓝后在进程里

Tomcat启动报错java.net.AbstractPlainSocketImpl(java/net/AbstractPlainSocketImpl.java:178:-1)Struts在网络复杂情况下启动报错解决办法

SSH项目 在网络复杂的情况(具体规律未知)下,Tomcat启动时,报如下错误: [ERROR] 2014-08-12 14:52:58,484 [org.apache.struts2.dispatcher.Dispatcher :27] - Dispatcher initialization failedUnable to load configuration. - Class: java.net.AbstractPlainSocketImplFile: AbstractPlainSocket

关于安装itunes提示未找到quicktime的报错解决办法

首先解决童鞋们在安装itunes提示itunes要求您的电脑运行Windows7或更高版本的报错解决办法,如下图: 这是因为您当前的电脑系统是XP系统最新的itunes系统要求是Windows7.Windows2000.Windows2003.vistar等更高版本的操作系统,这个您也不必担心,不需要更换系统的,您只要搜索下载个老版本的itunes即可,不知道哪个版本可以安装,就之间搜itunes XP系统就可以,如下图: 搜到下载下来安装即可,对于安装好后打开提示未找到quicktime的报错

Nodejs npm安装socket.io报错解决办法

安装socket.io时,报错,提示需要安装Microsoft visual studio 2005 或 Net framework 2.0 sdk,没有找到vcbuild.exe,解决办法是安装 .NET Framework 2.0 Software Development Kit (SDK) http://www.microsoft.com/en-us/download/details.aspx?id=15354 并将 C:\Program Files\Microsoft Visual St

电脑死机、蓝屏、黑屏、报错解决办法

电脑死机.蓝屏.黑屏.报错解决办法 1.ctrl+alt+delete,打开任务管理器,选择关机-重新启动,如果不行接着看. 2.长按电源5秒钟,强制关机,(因为可能是CPU过热,它需要凉快一下),在正常开机,如果不行接着看. 3.长按电源5秒钟,强制关机,开机,按F8,选择最后一次正常启动,如果不行接着看. 4.长按电源5秒钟,强制关机,开机,按F8,选择进入安全模式,如果不行接着看. 5.如果电脑好了,那么在重新启动,确定电脑完全好了,在进安全模式全盘杀毒,如果又打不开了,那么接着看. 6.