是一个编程错误,它表示在arm64架构上使用了未定义的符号_BN_new。arm64是一种处理器架构,常用于移动设备和服务器。_BN_new可能是一个函数或变量,但在当前上下文中未定义。
要解决这个错误,可以尝试以下几个步骤:
需要注意的是,由于未提及具体的上下文和代码,以上步骤仅为常见的解决方法,具体情况可能需要根据实际情况进行调试和排查。
符号未定义是链接过程中常见的问题,有时候很明显,有时候却很隐晦,比如链接库的顺序导致的符号未定义问题。...问题描述使用 gcc/g++ 编译一个项目的时候,出现了未定义的符号,符号来源于一个开源库,确认了库的位置,库中符号正常定义,库及其路径都被正确的引用了。...这是一个典型的库链接顺序导致的符号未定义问题了。...这个选项也会导致一些符号未定义问题。...就是因为 –as-needed 的忽略功能,会导致一些库虽然被声明链接了,实际并没有,所以也会导致其他需要用的库(当然定义在其后)产生符号未定义问题。
hardware, distributed representations, data structures, Turing completeness, computing in superposition 矢量符号架构作为纳米级硬件的计算框架...本文回顾了计算框架矢量符号架构(也称为超维计算)的开发最新进展。...正如我们所展示的,矢量符号架构是图灵完备的,我们看到它们充当在无数人工智能设置中使用分布式表示进行计算的框架。...出于以下原因,我们提出了向量符号架构(VSA)Gayler, 2003]或者,同义地,超维度计算[Kanerva, 2009]作为这样的计算框架。...因此,VSA概念可以灵活地连接到多种不同的硬件类型,例如模拟内存计算架构的二进制值[Karunaratne et al., 2020]或用于尖峰神经元架构的复值VSAsFrady and Sommer,
本文链接:https://blog.csdn.net/boling_cavalry/article/details/101908575 为什么需要ARM64架构的OpenJDK8的Docker镜像 对现有的...--print-architecture): root@raspbian:~# echo $(dpkg --print-architecture) arm64 看上图红框3中的代码,如果处理器架构是arm64...架构: ?...结论 OpenJDK官方镜像的制作原理,是依据宿主机CPU架构去官方下载对应的OpenJDK安装包,再做成镜像,目前OpenJKD8的安装包并没有提供ARM版本,因此官方没有提供ARM版本的OpenJDK8...的Docker镜像; 解决之道 现状是OpenJDK官方在ARM64架构不提供8版本的官方Docker镜像,解决此问题的思路有两个(个人观点,欢迎探讨) 自己编译一个8版本的OpenJDK安装包,以此来做
因为DWARF的存在我们才可以在 debug 时看到函数名称等信息,因为dSYM文件的存在,我们才可以符号化,解 Crash。 关于符号解析之前有过一篇文章 iOS 符号化解析。...nm XXX # 查看所有符号,会打印出符号来源哪个地方 nm -nm XXX # 找到未定义的符号,也就是外部符号 nm -u XXX 前面我们曾经查看过xcodebuild的符号,输出如下。...,其中全部的类型包括: A 该符号的值在今后的链接中将不再改变; B 该符号放在 BSS 段中,通常是那些未初始化的全局变量; D 该符号放在普通的数据段中,通常是那些已经初始化的全局变量; T 该符号放在代码段中...,通常是那些全局非静态函数; U 该符号未定义过,需要自其他对象文件中链接进来; W 未明确指定的弱链接符号;同链接的其他对象文件中有它的定义就用上,否则就用一个系统特别指定的默认值。...### 查看查看静态库支持的 CPU 架构 lipo -info frameworkName.framework/frameworkName lipo -info frameworkName.a ##
3.2.1 ARM64架构下的示例代码 以下是一个基于ARM64架构的示例代码,展示如何使用Frame Pointer(FP)寄存器手动遍历栈帧: #include #include...fp是一个无符号整数,表示的是一个内存地址,(uintptr_t*)(fp)将fp转换成一个指针,然后*操作符取该指针所指向的值。 在ARM64架构中,函数调用时会创建一个新的栈帧。...在不同的架构中,fp寄存器可能有不同的名称,例如,在ARM64架构中,fp寄存器对应X29;在ARM架构中,fp寄存器对应R11;在x86_64架构中,fp寄存器对应RBP。...在不同的架构中,lr寄存器可能有不同的名称,例如,在ARM64架构中,lr寄存器对应X30;在ARM架构中,lr寄存器对应R14;在x86_64架构中,返回地址通常被保存在栈上,而不是专用寄存器中。...在不同的架构中,sp寄存器可能有不同的名称,例如,在ARM64架构中,sp寄存器对应XSP;在ARM架构中,sp寄存器对应R13;在x86_64架构中,sp寄存器对应RSP。
为什么要学ARM64? android 5.0系统就开始引入Arm64-v8a,它用于支持全新的AArch64架构,这个架构也就是我们要学习的arm64汇编。...因此现在主流的apk都是支持AArch64架构。...它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。 1. N(Negative)标志 CPSR的第31位是 N,符号标志位。它记录相关指令执行后,其结果是否为负。...C(Carry)标志 CPSR的第29位是C,进位标志位。一般情况下,进行无符号数的运算。 加法运算(add指令):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。...在进行有符号数运算的时候,如果超过了机器所能标识的范围,称为溢出。
本文讲述的是符号化“残破”的栈,如果你有一个系统生成的crash日志,请交给Xcode自带的symbolicatecrash脚本。...25904 为例 需要条件: (1)atos工具(Xcode安装时一般会自带) (2)确认app运行的架构(armv7、arm64) (3)app对应的dSYM文件(出包时获得) (4)app代码载入到内存的基地址...0x00000001966870ec + 96 需要条件: (1)atos工具(Xcode安装时一般会自带) (2)确认app运行的架构...(armv7、arm64) (2)该OS版本、该动态库的符号文件(将该手机连接到电脑的Xcode上,会自动同步系统符号文件) (3)该动态库载入到内存的基地址(后文详细介绍) 方法: 在命令行中输入:...我理解其实只需要一个offset,配合已知的架构、加载方式等信息,应该就能推测出app自身的基地址和各个库的基地址。尝试后也证明,各个库的基地址-offset后的值在同个设备的多次启动上是一致的。
而2020年对Windows7服务支持的终止再一次推动了国产系统的发展。工信部对此表示,将继续加大力度,支持Linux的国产操作系统的研发和应用,并希望用户可以使用国产操作系统。...技术实现 顺势而为,在发布arm64架构的国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK(官方)的直播播放SDK用一句比较流行的广告语叫遥遥领先,我们更是在前几年已经发布了...Linux X86_64架构的播放器,并得到了广泛的应用。...nullptr == sdk_wrapper) return; sdk_wrapper->CaptureImageHandle(handle, result, file_name); } 总结 arm64...架构的国产操作系统|Linux下的RTMP、RTSP直播播放,延迟依然毫秒级,随着国产操作系统在传统行业的推进,越来越多的场景需要高稳定性高延迟低的RTMP|RTSP播放器,本文抛砖引玉,感兴趣的开发者可以跟我单独探讨
str寄存器: 表示把寄存器内容存储到栈上; ldr 寄存器:表示把栈上内容载入到寄存器 (图片来源网络) 在ARM64架构下, CPU提供了33个寄存器, 其中前31个(0~30)属于通用寄存器 (...(SP), 用于指向每个函数的栈顶; ARM64该架构的 31 个通用寄存器中,每个寄存器都可用作 64 位 X 寄存器 (X0-X30),或用作 32 位 W 寄存器 (W0-W30)。...例如执行32位整数加法: ADD W0, W1, W2 例如执行 64 位整数加法: ADD X0, X1, X2 ARM64: A64 指令集是在 Armv8-A 中引入的,以支持 64 位架构。...):它是操作系统使用的保护模式; 5、ABT(终止模式):当数据或指令预取出错时进入的模式; 6、SYS(系统模式):运行具有特权的操作系统任务; 7、UND(未定义指令中止模式):当处理器试图执行未定义指令时进入的模式...ARM64架构处理器采用48位物理寻址,它最大可以支持256T的地址空间,但是虚拟地址依然采用64,虚拟地址远远大于物理地址。
更新 Xcode 工程架构列表 Xcode 12 及更高版本会自动将 arm64 架构添加到所有 macOS 二进制文件(包括应用程序和库)的标准架构列表中。...更新自定义 Makefile 结构列表 如果使用自定义脚本或 makefile 构建项目,则将 arm64 架构添加到适当的环境变量中。Xcode 使用 ARCHS 环境变量来定义当前的构建架构。...如果跨多个平台共享代码,则还可以在条件编译语句中使用特定于编译器的宏,例如 arm64 或 aarch64 。 为了区分特定类型处理器的代码,请添加针对适当架构的条件编译语句。...您可以通过更改项目的 Build Active Architecture Only 选项来在任意的 Mac 机上创建带有调试符号的通用二进制文件。.../Mail x86_64 arm64 指定应用程序的启动行为 对于通用二进制文件,系统倾向于执行当前平台原生的架构,在基于 Intel 的 Mac 电脑上,系统始终执行 x86_64 架构。
通用二进制文件具有以下特性: 1、Apple 提出的一种程序代码,能够同时适配多种架构的二进制文件。 2、同一个程序包中,同时为多种架构提供最理想的性能。...4、由于多种架构之间有共通的非执行资源,所以并不会比单一架构的两倍大。 5、程序在执行的时候只调用一部分代码,运行起来不需要额外的内存。 那么多种架构是什么意思呢?...我们再实际开发中遇到的设置 arm64 & armv7 这些都是对应的架构: 名称 注释 arm64 真机64位处理器需要arm64架构(iphone6,iphone6p以上的真机) armv7s 真机...我们可以通过 file 指令,也可以通过 lipo -info 指令查看二进制文件支持的架构: ? ? 可以看到,目前 test 可执行程序支持 arm64 和 arm_v7 两种架构。...) LC_SYMTAB 载入符号表地址 LC_DYSYMTAB 载入动态符号表地址 LC_LOAD_DYLINKER 加载动态链接器 LC_UUID 唯一标识,crash解析中也会用到,检查dysm文件和
本文从实际开发中遇到的一个平台相关的crash问题出发,通过代码对比,研究了在x86-64架构和ARM64架构对于不定函数参数传递的方式——特别是iOS系统的不同之处,同时也解答了为什么在调用带不定参数类型的...:-P 测试代码 该部分编写了三段测试代码,根据编译出的汇编指令,发现了以下问题: 1.直接调用参数列表含有不定参数的函数指针: x86-64架构下参数传递都正常,但在ARM64架构下,调用一个参数时,...查阅Runtime源码(Code 4-1),发现IMP的指针定义与传统认识有些许出入,被一个名为OBJC_OLD_DISPATCH_PROTOTYPES的宏控制,未定义时IMP指针指向一个参数列表为void...ARM64 ABI处理,而所有的变参则会依次压栈 ---- 以下问题真机环境只考虑ARM64(iPhone 5s及以后的设备),也即AArch64执行态的ARMv8-A架构 经过上一部分的代码测试,引起...ARM和ARM64架构的ABI有一些不同之处。
自己研究的过程中发现Flutter1.9的版本没有这些Precompiled符号内容,原因是在打包脚本$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh...中做了如下处理,而高版本的Flutter去掉了这些处理,保留了符号信息。...这部分能优化的空间很小,主要是通过裁剪引擎不需要的功能,减少体积。编译引擎时可以选择性编译skia和boringssl,收益大概只有几百K。 除此之外可以对Flutter的符号进行分离。...2.8M flutter strip调试符号 单架构平均6M framework总计收益 —- 11.7M size Report最终收益 —- —- 总结:我们通过删除不必要的文件、移走部分文件改为下发...、去掉Flutter的符号文件、引擎大小优化等措施,使iOS接入Flutter的体积成本降到10M。
也是目前最成熟运用最广的开源库,并且这个库现在依然在更新和维护。 它主要包括三个部分: dumpSyms 负责读取用户开发应用中的debug信息,并生成特定的符号文件。...processor 通过 minidump_stackwalk 读取 minidump 文件 找到合适的符号文件产生一个可读的 c/c++ 调用栈。...因为我们还缺少符号文件去符号化这个 dmp。 那我们去哪里找这个符号文件呢?打包时,iOS App 的符号文件默认情况下都存放在 xcarchive 文件中。.../dump_syms -a arm64 TTTT.app.dSYM > TTTT.sym ❝解释下,命令中的架构可以是 armv7, armv7s 等等,主要还是看你的应用是支持的什么架构,像我的这个测试工程...,它就只支持 arm64,所以我这边就只生成 arm64 的 Symbols 文件。
这里有很多核心问题需要解决,其中之一是修复函数使用未导出内核符号问题。 ? 我们都知道Linux是宏内核架构(Monolithic Kernel)。...由于内核错误可能发生在任何地方,因此Kallsyms单独保存了一份函数符号和函数地址的对应关系,其中的符号数量远远多于export_symbols宏导出的符号量。...可能会有同学感兴趣我们是如何实现内核函数拦截的,即如何从find_symbol_in_section跳转到hook_find_symbol_in_section,这里以ARM64架构CPU为例简单说明。...ldr指令从.addr(low)和.addr(high)中把跳板函数地址装载进x0,注意到ARM64的地址长度为64位,而ARM64的指令长度为32位,因此跳板函数地址被折成低32位和高32位。...此外顺便多提一下,上述使用Inline Hook技术的拦截方式跟CPU架构是强相关的,如果想实现ARM32或x86架构的函数拦截,则需要分别单独实现。
): current ar archive 可以知道LYTestKit包括armv7、i386、x86_64、arm64四种CPU架构的指令。...用Hopper Disassembler打开LYTestKit,选择架构为arm64,再选择一个原工程对应的.o文件,首先映入眼帘的是下面这段描述:(不知道.o文件是什么的,点这里复习下) /* ---...链接过程分为两步: 1、空间和地址分配,扫描所有的目标文件,获得各个段的长度、属性、位置信息,并把所有的符号定义以及引用收集起来,放到全局的符号表中。...通过所有段的长度,计算和合并后的长度和位置,并建立映射关系; 2、符号解析和重定位,使用上一步收集到的信息,读取文件中段的数据和重定位信息,进行符号解析和重定位。 静态链接的更详细内容点这里。...,但不打入二进制文件; 2、调试用的信息比如符号串、代码行号等不会打入二进制包,而是额外生成符号表; 3、Xcode默认在release下会用fastest的优化选项; 总结 经过此次思考,对静态库的内容有更清晰的认识
解决办法 全功能专业版和独立播放器版、企业版等版本中都包含有 ffmpeg 和 ijkplayer,如果您的项目中已经包含相关开源库,推荐使用 精简版 或 符号重命名版。...例如:Architectures in the fat file: libexample.a are: i386 armv7 armv7s x86_64 arm64 那么我们需要重复5次以下步骤。...libexample-i386.a -output libexample-new.a 三、原理 lipo是管理Fat File的工具, 可以查看cpu架构, 提取特定架构,整合和拆分库文件。...-info xxxx.framework(查看信息) lipo -create xxxx xxxx -output xxxx(整合成Fat文件) lipo xxxx -thin cpu(armv7/arm64...等) -output xxxx(提取特定的cpu架构的thin文件) lipo -remove cpu(armv7/arm64等) xxxx -output xxxx(移除掉特定的cpu架构的文件)
背景 最近公司项目需要适配arm64架构机器,特意整了两台arm64架构的CentOS7/8的机器来构建。 x86、x64架构下的应用在arm64下面需要解决各种环境和依赖问题。...、重定位信息、调试段、typchk 段、凝视段、文件头以及全部或部分符号表。...一旦您使用该命令,则非常难调试文件的符号;因此,通常应该仅仅在已经调试和測试过的生成模块上使用 strip 命令。使用 strip 命令降低对象文件所需的存储量开销。...总结 在 arm 架构通常是在移动端下面使用的比较多,由于苹果M1架构也是基于arm64上构建,所以带动了一波arm架构的热潮,社区开发者纷纷要求提供arm版本的程序,有M1本的程序员就是任性。...当然间接带动了linux arm架构下的应用。
在 iOS 开发中,解决 crash 问题是比较常见的工作。其中能够解析出符号当然是定位问题的开始。 实际工作中,也有看到很多人其实会卡在解析符号这里,遇到这种情况,可以按照本文中的做法解决。...接着执行 symbolicatecrash xxx.crash 就可以解析符号了。 找不到符号的解决方法 首先,需要确认一下符号表是不是正确的。...有时候我们需要解析单个地址的符号,比如 lr 寄存器的地址对应的符号,就需要用到 atos 用法如下: atos -arch [armv7 or arm64] -o [BinaryFile or dSYMFile...] -l loadAddress address 其中 -arch 指定二进制的架构,比如 armv7,armv7s,arm64 等等。...-o 指定符号文件,可以是 dSYM 文件,也可以是包含了符号表的可执行文件。
领取专属 10元无门槛券
手把手带您无忧上云