Undefined symbols for architecture armv7s

来源:互联网 发布:同志软件有那些 编辑:程序博客网 时间:2024/06/06 06:49
转载:http://www.tekuba.net/program/264/

特酷吧在将之前的程序做iphone5适配的时候,出现了如下的错误:
ld: warning: ignoring file /lib/libavcodec.a, file was built for archive which is not the architecture being linked (armv7s): /lib/libavcodec.a
ld: warning: ignoring file /lib/libavdevice.a, file was built for archive which is not the architecture being linked (armv7s): /lib/libavdevice.a
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /file/location for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)
这里的armv7s指的是iphone5框架,错误的大体意思就是引用的第三方库文件不符合armv7s的要求。
我的理解:armv7s是IOS框架指令集,下面列举了IOS的硬件适配对应关系:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5
一般真机测试时,如果报armv7s错误,一般都是因为armv7s指令集是打开的,而之前一些引用库都是使用armv7s之前的指令集编译的(当这些引用的外部库使用armv7s指令集编译后,就不会出现该问题)。
解决办法如下1,2都可以:
1,[去掉armv7s指令集支持]xcode-->"Build Settings"-->"Valid Architectures"中把armv7s去掉(可能使程序无法适配iPhone5)。
2,[兼容armv7s]PROJECT-Build Setting,然后把Build Active Architecture Only的值设置为Yes。
原创粉丝点击