我发现AppStore我的应用程序发布了一个问题!验证过程说:"iPhone/iPod Touch:应用程序可执行文件包含不受支持的结构:armv7s"
这是我链接的库:CoreLocation(必需)Twitter(可选)QuartzCore(必需)MapKit(必需)UIKit(必需)基础(必需)CoreGraphics(必需)libGoogleAnalytics.a(必需)libsqlite3.dylib(必需)CFNetwork(必填)
我也尝试删除GoogleAnalytics Library,但问题是一样的!你有什么主意吗?
谢谢
根据这个回复,我尝试使用-mfloat-abi=hard标志构建.在Application.mk我有
APP_ABI := armeabi-v7a
APP_CFLAGS += -mfloat-abi=hard
Run Code Online (Sandbox Code Playgroud)
并得到了这个错误
error: ./obj/local/armeabi-v7a/objs/XXX.o uses VFP register arguments, output does not
Run Code Online (Sandbox Code Playgroud)
我发现这个链接,有人发布-mfloat-abi = hard 不能使用stock工具链.
在NDKr9中仍然如此吗?
我的 Zynq-7000 ARM Cortex-A9 处理器同时具有 NEON 和 VFPv3 扩展,Zynq-7000-TRM 表示处理器配置为具有“VFPv3 和高级 SIMD 指令的独立管道”。
到目前为止,我使用 Linaro GCC 6.3-2017.05 和-mfpu=neon选项编译了我的程序,以使用 SIMD 指令。但是在编译器也有非SIMD操作要发出的情况下,使用会有所不同-mfpu=neon-vfpv3吗?GCC 的指令选择和调度程序是否会为两个版本发出指令,以便它可以利用两个管道来提高 CPU 的利用率?
我正在尝试在Ubuntu计算机上为Android ARMV7编译OpenSSL 1.1.0(k)。但我只能针对android,android-armabi,android64(-aarch64)进行编译。
我正在尝试的内容(在openssl-1.1.0k文件夹中):
export AR=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ar
export CC=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
export LD=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld
export RANLIB=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ranlib
export ANDROIDNDKVER=r11c
export ANDROIDAPI=24
export CROSS_SYSROOT=~/android-ndk-r11c/platforms/android-24/arch-arm64
export ANDROID_DEV=~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
export SYSROOT=~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
export PATH=$PATH:~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
Run Code Online (Sandbox Code Playgroud)
现在当我列出目标
./Configure LIST
Run Code Online (Sandbox Code Playgroud)
没有提到Armv7。当我在openssl-1.0.2l目录中输入相同的命令时,我希望有一个名为android-armv7的目标。
我想念什么?或者,如何在armv7 Android手机的兼容版本中编译Openssl-1.1.0?
同样使用NDK r18b或android-28并不能解决问题,甚至无法使用arch-arm代替arch-arm64。
背景:我现在使用的框架(Qt 5.13)要求使用OpenSSL 1.1.0,并且它可以在某些移动设备上使用。类似于HTC 10(armv8 64位),但在LG K7(armv7 32位)和Amazon Fire平板电脑上,它无法正常工作。
谢谢,
我在我的一个VoIP功能项目中使用idoubs开源.armv6和armv7架构的工作正常.现在我正在更新我的项目以支持iphone 5.我无法在armv7s架构中编译项目(我放弃了armv6架构.在armv7和armv7s架构中编译).我收到了以下错误.
ld:找不到-lsrtp的库
collect2:ld返回1退出状态
请分享您的建议以解决此问题.
注意:
libsrtp.a适用于除armv7s架构之外的所有架构(armv6,armv7和i386).所以我不确定idoubs源代码是否真的更新了
我使用的是最新版本的r221和xcode 4.5.
提前致谢...
在我的iPhone应用程序上工作并尝试构建调试,我得到"106架构armv7的重复符号"?
我正在使用.workspace文件,因为我正在尝试使用CocoaPods.如果我不使用.workspace而是使用.xcodeproj我没有得到错误,但后来我失去了-lPods.
在我的项目中,我在Project Navigator中有以下目标.
Pods (blue icon)
MyProject (blue icon)
Restkit.xcodeproj (blue icon)
... all my files
Run Code Online (Sandbox Code Playgroud)
问题是Restkit正在引用"AFHTTPClient.h"和所有其他AF代码,但我通过CocoaPods包含它.我尝试从RestKit库中删除AFNetworking文件夹,但显然Restkit库找不到AFNetworking的Pods版本?
有没有办法让RestKit使用Pods版本?如果不是如何从我的项目中删除Pods?
我对iOS构建设置中可用的体系结构有点困惑.
我发现有4种类型:
i386armv6armv7armv7s.我知道i386是模拟器,armv6适用于iOS设备(旧设备,请这样认为).
但我对armv7和armv7s感到困惑.
1)armv7和armv7s有什么区别?
2)请问armv7和armv7s架构的应用支持老版本的iOS?
我搜索但无法获得任何有用的信息.
请提前帮助我理解其中的差异.
在ARMv7-A处理器上,我正在寻找一种从任何模式确定处理器的当前模式(用户,主管,IRQ等)的简单方法。这将使我能够动态决定是否执行某些操作,例如打主管电话或直接执行操作。
乍一看,这似乎很简单。在CPSR含有(M)模式比特,其确定处理器模式。
《 ARMv7-A体系结构参考手册》的修订版Cb的第1150页的B1.3.3节(程序状态寄存器)指出:
该字段只能写入PL1或更高版本。可以在任何模式下读取其值,但是ARM会不赞成在PL0执行的软件使用其值或尝试对其进行更改。
因此,CPSR.M在用户模式下不建议使用这些位,但是应该可以使用。
但是,继续实际使用MRS(我知道的唯一方法)读取CPSR 。ARM 1988年的B9.3.8节(MRS)指出:
在用户模式下执行并访问CPSR的MRS返回CPSR。{E,A,I,F,M}字段的UNKNOWN值。
由于这些字段是未知的,因此似乎没有一种从用户模式读取模式位的方法。是否存在从用户模式读取CPSR的替代方法,或者确定正在执行哪种模式代码的替代方法?
我可能会检测未定义的指令异常,并尝试在用户模式下执行非法指令,但我希望有更好的方法。
我有一些cpp文件,我想编译它,以便在模拟器和iPhone上运行.我想要做的是:
g++ -c file1.cpp file2.cpp -std=c++11
ar rcs libabc.a *.o
Run Code Online (Sandbox Code Playgroud)
这个编译很好但仅适用于x86_64架构.显然......
有没有简单的方法我可以编辑这两行命令,以便为所有架构编译一个库(x86_64 i386 armv7 armv7s arm64)?或者我应该构建一些巨大的脚本来拥有该库?如果是这样?那有没有现成的脚本?
我也尝试使用-arch运行它:
g++ -c file1.cpp file2.cpp -std=c++11 -arch armv7 -arch x86_64
Run Code Online (Sandbox Code Playgroud)
但这些是我得到的一些错误
//----------------- Error 1 -------------------------//
Run Code Online (Sandbox Code Playgroud)
//----------------- Error 2 -------------------------//
Run Code Online (Sandbox Code Playgroud)
//----------------- Error 3 -------------------------//
Run Code Online (Sandbox Code Playgroud)
谢谢!
我的应用程序支持 iOS8.0 及以上版本。我知道从 iOS7 开始它的 arm64 位架构。在这种情况下,我们是否需要为“armv7”和“arm64”切片编译二进制文件?
如果我单独为 arm64 编译,我可以减少我的应用程序大小。这是正确的方法吗?
请帮忙。
armv7 ×10
ios ×3
android ×2
arm ×2
assembly ×2
android-ndk ×1
architecture ×1
arm64 ×1
armv6 ×1
c++ ×1
clang ×1
cocoapods ×1
compilation ×1
executable ×1
frameworks ×1
gcc ×1
iphone-5 ×1
neon ×1
objective-c ×1
openssl ×1
qt ×1
ubuntu ×1
voip ×1
xcode ×1
xcode4.5 ×1