external 库介绍
目录
- 概述
- 库
- 1. aac-fdk-aac库解码aac
- 2. adeb-Ubuntu的shell环境
- 3. adhd-播放音乐的
- 4. android-clat-ipv4转ipv6进行传输的
- 5. androidplot-画表格的
- 6. angle-openGL ES转Vulkan,桌面级opengl,direct3D等
- 7. ant-glob-ant库中用来匹配路径glob通配符的库,ant是用来打包和编译java的工具
- 8. antlr-计算机语言的解析
- 9. apache-commons-bcel-解析java类文件,java文件变为.class文件
- 10. apache-commons-compress-tar,zip,cpio,bzip2,7zip格式的压缩包解压缩,java库
- 11. apache-commons-math-数学相关的java库,有矩阵,统计等
- 12. apache-harmony-java SDK实现,只有测试代码
- 13. apache-http-关于http的java库,有android.net.http的实现
- 14. apache-xml-解析xml的java库,源码中比较少引用到
- 15. arm-neon-tests-arm的neon指令的测试,并行加速矩阵运算
- 16. arm-optimized-routines-arm优化例子,有math和string库的优化
- 17. arm-trusted-firmware-安全启动相关
- 18. autotest-linux自动化测试框架
- 19. avb-安卓验证启动
- 20. bc-linux计算器
- 21. bcc-linux内核trace工具,可以使用adeb工具来用
- 22. blktrace-追踪块设备调用的工具
- 23. boringssl-https加密库,从openssl分出来的
- 24. bouncycastle-提供了很多哈希算法和加密算法的第三方库
- 25. brotli-Google推出的无损压缩算法,比gzip更快更小
- 26. bsdiff-用来生成差分包以及APK的增量更新
- 27. bzip2-.tar.bz2工具,只压缩不归档
- 28. caliper-Google开发的性能测试工具
- 29. capstone-反汇编框架
- 30. catch2-轻量级c++单元测试框架
- 31. cblas-矩阵运算库
- 32. cbor-java-基于json的简明二进制对象展现
- 33. chromium-libpac-浏览器代理自动配置
- 34. chromium-trace-Android systrace性能分析工具
- 35. chromium-webview-webview浏览器apk
- 36. clang-LLVM的编译前端,支持代码静态检查
- 37. cldr-通用语言环境数据仓库,Common Locale Data Repository
- 38. cn-cbor-基于json的简明二进制对象展现,c语言实现
- 39. compiler-rt-(runtime)项目为硬件不支持的低级功能提供目标特定的支持。
- 40. conscrypt-加密安全相关的库
- 41. cpu_features-跨平台的用来检索CPU功能的c库-解析/proc/cpuinfo文件得到
- 42. cpuinfo-有关/proc/cpuinfo的信息
- 43. crcalc-构造实数计算器-用级数来计算实数
- 参考
概述
├── aac // 用于Android的全称Fraunhofer FDK AAC编解码器库,多媒体相关
├── adeb // 为Android设备提供Ubuntu那样的shell环境,可以运行python,apt-get安装软件等等
├── adhd // 用于监视A / V设备事件的守护程序,该目录下有个cras,为ChromeOS Audio Server,用来播放音乐的
├── android-clat // 用NAT64/DNS64支持ipv4转ipv6,ipv4包 -> clat进程客户端 -> Nat 4->6变为ipv6包 -> 经ipv6网络 -> Nat 6->4 -> plat server转为ipv4 -> ipv4服务器
├── androidplot // Android中用来画表格的库
├── angle // Almost Native Graphics Layer Engine,几乎全部的本地图形层引擎。支持openGL ES转Vulkan,桌面级opengl,direct3D等
├── ant-glob // ant库中用来匹配路径glob通配符的库,ant用来打包和编译java
├── antlr // 计算机语言的解析,和编译原理相关
├── apache-commons-bcel // 解析java的字节码,java文件变为.class文件,java的库
├── apache-commons-compress // tar,zip,cpio,bzip2,7zip格式的压缩包解压缩,java的库
├── apache-commons-math // 数学相关的java库,有矩阵,统计等
├── apache-harmony // java SDK实现,只有测试代码
├── apache-http // 关于http的java库,有android.net.http的实现
├── apache-xml // 解析xml的java库,源码中比较少引用到
├── arm-neon-tests // arm的neon指令的测试,并行加速矩阵运算
├── arm-optimized-routines // arm优化例子,有math和string库的优化
├── arm-trusted-firmware // 安全启动相关(√)和optee相关
├── autotest // linux自动化测试框架
├── avb // 安卓验证启动
├── bc // linux计算器
├── bcc // linux内核trace工具,可以使用adeb工具来用
├── blktrace // 追踪块设备调用的工具
├── boringssl // https加密库,从openssl分出来的
├── bouncycastle // 提供了很多哈希算法和加密算法的第三方库
├── brotli // Google推出的无损压缩算法,比gzip更快更小
├── bsdiff // 用来生成差分包以及APK的增量更新
├── bzip2 // .tar.bz2工具,只压缩不归档
├── caliper // Google开发的性能测试工具
├── capstone // 反汇编框架
├── catch2 // 轻量级c++单元测试框架
├── cblas // 矩阵运算库
├── cbor-java // 基于json的简明二进制对象展现,java语言实现
├── chromium-libpac // 浏览器代理自动配置
├── chromium-trace // Android systrace性能分析工具
├── chromium-webview // webview浏览器apk
├── clang // LLVM的编译前端,支持代码静态检查
├── cldr // 通用语言环境数据仓库,Common Locale Data Repository
├── cn-cbor // 基于json的简明二进制对象展现,c语言实现
├── compiler-rt // Compiler-RT(runtime)项目为硬件不支持的低级功能提供目标特定的支持。
├── conscrypt // 安卓加密安全相关的库
├── cpu_features // 跨平台的用来检索CPU功能的c库-解析/proc/cpuinfo文件得到
├── cpuinfo // 有关/proc/cpuinfo的信息
├── crcalc // 构造实数计算器-用级数来计算实数
├── cros //
├── crosvm
├── curl
├── dagger2
├── deqp
├── deqp-deps
├── desugar
├── dexmaker
├── dlmalloc
├── dng_sdk
├── dnsmasq
├── doclava
├── dokka
├── drm_hwcomposer
├── drrickorang
├── dtc
├── dynamic_depth
├── e2fsprogs
├── easymock
├── eigen
├── elfutils
├── emma
├── error_prone
├── ethtool
├── exoplayer
├── expat
├── f2fs-tools
├── fastrpc
├── fdlibm
├── fec
├── flac
├── flatbuffers
├── fmtlib
├── fonttools
├── FP16
├── freetype
├── fsck_msdos
├── fsverity-utils
├── FXdiv
├── gemmlowp
├── gflags
├── giflib
├── glide
├── golang-protobuf
├── google-benchmark
├── google-breakpad
├── google-fonts
├── google-fruit
├── google-styleguide
├── googletest
├── gptfdisk
├── grpc-grpc
├── grpc-grpc-java
├── guava
├── guice
├── gwp_asan
├── hamcrest
├── harfbuzz_ng
├── honggfuzz
├── hyphenation-patterns
├── icu
├── igt-gpu-tools
├── image_io
├── ImageMagick
├── ims
├── iperf3
├── iproute2
├── ipsec-tools
├── iptables
├── iputils
├── iw
├── jacoco
├── jarjar
├── javaparser
├── javapoet
├── javasqlite
├── jcommander
├── jdiff
├── jemalloc
├── jemalloc_new
├── jline
├── jsilver
├── jsmn
├── jsoncpp
├── jsr305
├── jsr330
├── junit
├── junit-params
├── kernel-headers
├── kmod
├── kotlinc
├── kotlinx.coroutines
├── ksoap2
├── libaom
├── libavc
├── libbackup
├── libbrillo
├── libcap
├── libcap-ng
├── libchrome
├── libcups
├── libcxx
├── libcxxabi
├── libdaemon
├── libdivsufsort
├── libdrm
├── libepoxy
├── libese
├── libevent
├── libexif
├── libffi
├── libfuse
├── libgav1
├── libgsm
├── libhevc
├── libiio
├── libjpeg-turbo
├── libkmsxx
├── libldac
├── libmpeg2
├── libnetfilter_conntrack
├── libnfnetlink
├── libnl
├── libogg
├── libopus
├── libpcap
├── libphonenumber
├── libpng
├── libprotobuf-mutator
├── libsrtp2
├── libtextclassifier
├── libunwind
├── libunwind_llvm
├── libusb
├── libutf
├── libvpx
├── libvterm
├── libxaac
├── libxkbcommon
├── libxml2
├── libyuv
├── linux-kselftest
├── llvm
├── lmfit
├── ltp
├── lua
├── lz4
├── lzma
├── markdown
├── mdnsresponder
├── mesa3d
├── mime-support
├── minigbm
├── minijail
├── mksh
├── mockftpserver
├── mockito
├── mockwebserver
├── modp_b64
├── mp4parser
├── mtpd
├── nanohttpd
├── nanopb-c
├── naver-fonts
├── neon_2_sse
├── neven
├── newfs_msdos
├── nfacct
├── nist-pkits
├── nist-sip
├── nos
├── noto-fonts
├── oauth
├── objenesis
├── oj-libjdwp
├── okhttp
├── one-true-awk
├── opencensus-java
├── OpenCL-CTS
├── OpenCSD
├── openssh
├── oss-fuzz
├── owasp
├── parameter-framework
├── pcre
├── pdfium
├── perfetto
├── piex
├── ply
├── ppp
├── proguard
├── protobuf
├── psimd
├── pthreadpool
├── puffin
├── python
├── rappor
├── Reactive-Extensions
├── replicaisland
├── rmi4utils
├── robolectric-shadows
├── roboto-fonts
├── rootdev
├── rust
├── scapy
├── scrypt
├── scudo
├── seccomp-tests
├── selinux
├── setupcompat
├── setupdesign
├── sfntly
├── shaderc
├── shflags
├── skia
├── skqp
├── sl4a
├── slf4j
├── smali
├── snakeyaml
├── sonic
├── sonivox
├── speex
├── sqlite
├── squashfs-tools
├── strace
├── stressapptest
├── subsampling-scale-image-view
├── swiftshader
├── tagsoup
├── tcpdump
├── tensorflow
├── testng
├── tinyalsa
├── tinycompress
├── tinyxml
├── tinyxml2
├── toolchain-utils
├── toybox
├── tremolo
├── turbine
├── u-boot
├── ukey2
├── unicode
├── universal-tween-engine
├── v4l2_codec2
├── v8
├── vboot_reference
├── virglrenderer
├── vixl
├── vogar
├── volley
├── vulkan-headers
├── vulkan-validation-layers
├── walt
├── wayland
├── wayland-protocols
├── webp
├── webrtc
├── wpa_supplicant_8
├── wycheproof
├── xmp_toolkit
├── XNNPACK
├── xz-embedded
├── xz-java
├── yapf
├── zlib
├── zopfli
└── zxing
库
1. aac-fdk-aac库解码aac
用于Android的全称Fraunhofer FDK AAC编解码器库,多媒体相关,fdk-aac库
2. adeb-Ubuntu的shell环境
为Android设备提供Ubuntu那样的shell环境,可以运行python,apt-get安装软件等等
大概原理就是,它会下载一个img,作为它的rootfs,里面包含了Ubuntu运行的所需的东西
2.1 adeb的安装和使用
1. 在Ubuntu电脑上下载adeb代码
https://github.com/joelagnel/adeb.git
sudo apt-get install qemu-user-static debootstrap
cd adeb
sudo ln -s $(pwd)/adeb /usr/bin/adeb
// 用来下载包的
export ADEB_REPO_URL="github.com/joelagnel/adeb/"
git checkout 0.99g 这个tag的代码有--kernelsrc
2. 使用adeb
adeb prepare --full --kernelsrc ../linux-kernel/linux-5.4/
第一次下载完包之后,就可以从/tmp目录下找到androdeb-fs.tgz文件
然后把androdeb-fs.tgz文件拷贝到fs_build/androdeb-fs.tgz目录下
然后下次执行命令:
adeb prepare --kernelsrc ../build/ --archive fs_build/androdeb-fs.tgz
adeb shell
就可以进行apt-get install python3等等操作了,还是换apt-get的安装源
modprobe命令 可以安装kmod
3. adhd-播放音乐的
用于监视A / V设备事件的守护程序,该目录下有个cras,为ChromeOS Audio Server,用来播放音乐的
4. android-clat-ipv4转ipv6进行传输的
用NAT64/DNS64支持ipv4转ipv6,ipv4包 -> clat进程客户端 -> Nat 4->6变为ipv6包 -> 经ipv6网络 -> Nat 6->4 -> plat server转为ipv4 -> ipv4服务器
5. androidplot-画表格的
Android中用来画表格的库
6. angle-openGL ES转Vulkan,桌面级opengl,direct3D等
Almost Native Graphics Layer Engine,几乎全部的本地图形层引擎。支持openGL ES转Vulkan,桌面级opengl,direct3D等
7. ant-glob-ant库中用来匹配路径glob通配符的库,ant是用来打包和编译java的工具
glob模式,就是通配符,如*.java等就表示glob模式
8. antlr-计算机语言的解析
用来解析计算机语言的工具
9. apache-commons-bcel-解析java类文件,java文件变为.class文件
Byte Code Engineering Library为用户提供一种方便的方式来分析,创建和操作(二进制)Java类文件(以.class结尾的文件)
例如javac命令,可以将java文件,生成.class文件,其中就是用到了bcel库中的ClassParser类
10. apache-commons-compress-tar,zip,cpio,bzip2,7zip格式的压缩包解压缩,java库
tar,zip,cpio,bzip2格式的压缩包解压缩,以及对压缩包的加密工作
11. apache-commons-math-数学相关的java库,有矩阵,统计等
数学相关的java库,有矩阵,统计等
12. apache-harmony-java SDK实现,只有测试代码
java SDK实现,只有测试代码
13. apache-http-关于http的java库,有android.net.http的实现
关于http的java库,有android.net.http的实现
14. apache-xml-解析xml的java库,源码中比较少引用到
解析xml的java库,源码中比较少引用到
15. arm-neon-tests-arm的neon指令的测试,并行加速矩阵运算
NEON是一种SIMD(Single Instruction Multiple Data)指令,也就是说,NEON可以把若干源(source)操作数(operand)打包放到一个源寄存器中,对他们执行相同的操作,产生若干目的(dest)操作数,这种方式也叫向量化(vectorization)。
简单来说,就是:NEON指令优化的精髓就在于同时在不同通道内进行并行运算。通常可用于图像等矩阵数据的循环优化。
加法:4个数字并行运算
add: vaddq_f32 or vaddq_f64
float32x4_t v1 = { 1.0, 2.0, 3.0, 4.0 }, v2 = { 1.0, 1.0, 1.0, 1.0 };
float32x4_t sum = vaddq_f32(v1, v2);
// => sum = { 2.0, 3.0, 4.0, 5.0 }
乘法:
multiply: vmulq_f32 or vmulq_f64
float32x4_t v1 = { 1.0, 2.0, 3.0, 4.0 }, v2 = { 1.0, 1.0, 1.0, 1.0 };
float32x4_t prod = vmulq_f32(v1, v2);
// => prod = { 1.0, 2.0, 3.0, 4.0 }
16. arm-optimized-routines-arm优化例子,有math和string库的优化
arm优化例子,有math和string库的优化,最新的还有网络库的优化
17. arm-trusted-firmware-安全启动相关
安全启动相关
18. autotest-linux自动化测试框架
linux自动化测试框架
19. avb-安卓验证启动
安卓验证启动
20. bc-linux计算器
linux计算器
21. bcc-linux内核trace工具,可以使用adeb工具来用
linux内核trace工具,可以使用adeb工具来用
22. blktrace-追踪块设备调用的工具
追踪块设备调用的工具
23. boringssl-https加密库,从openssl分出来的
https加密库,从openssl分出来的
24. bouncycastle-提供了很多哈希算法和加密算法的第三方库
提供了很多哈希算法和加密算法的第三方库
25. brotli-Google推出的无损压缩算法,比gzip更快更小
Google推出的无损压缩算法,比gzip更快更小
26. bsdiff-用来生成差分包以及APK的增量更新
用来生成ota差分包以及APK的增量更新
https://blog.csdn.net/lmj623565791/article/details/52761658
1. 用户手机上提取当前安装应用的apk
2. 如何利用old.apk和new.apk生成增量文件,生成增量文件,./bsdiff old.apk new.apk old-to-new.patch
3. 增加文件与1.中的old.apk合并,然后安装,合并,./bspatch old.apk new2.apk old-to-new.patch
27. bzip2-.tar.bz2工具,只压缩不归档
.tar.bz2工具,只压缩不归档
tar –cjf jpg.tar.bz2 *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar -xjvf file.tar.bz2 // 解压 tar.bz2
28. caliper-Google开发的性能测试工具
Google开发的性能测试工具
libcore/benchmarks/src/benchmarks和./frameworks/base/tests/benchmarks/Android.bp有用到这个库
29. capstone-反汇编框架
反汇编框架
1. 深入了解ARM架构的反汇编器 https://zhuanlan.zhihu.com/p/144943960
objdump也是反汇编工具,将binary转成汇编的形式,就是不太准
用编译工具 gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump -d sdcard
30. catch2-轻量级c++单元测试框架
轻量级c++单元测试框架
使用上要比google test更简单 https://blog.csdn.net/wanywhn/article/details/83655406
31. cblas-矩阵运算库
矩阵运算库
32. cbor-java-基于json的简明二进制对象展现
基于json的简明二进制对象展现
物联网领域的JSON格式——CBOR,CBOR是专门为受限制物联网终端设计的数据交换格式,该格式轻量间接,可以简单理解为二进制形式JSON格式。CBOR格式可以与COAP协议组合使用,犹如HTTP+JSON;另外,CBOR也是COSE的基础。
参考:物联网专用数据交换格式CBOR https://www.jianshu.com/p/76adec5e61f8
33. chromium-libpac-浏览器代理自动配置
浏览器代理自动配置,配置http,https和ftp流量是直接走,还是走代理服务器
34. chromium-trace-Android systrace性能分析工具
Android systrace性能分析工具
使用方法:参考https://developer.android.com/topic/performance/tracing/command-line
该命令在android-sdk/platform-tools/systrace/中,需要安装python
python systrace.py -o mynewtrace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res
python systrace.py --list-categories 列出支持的策略
也可以使用android-studio中的monitor.bat工具来抓systrace
将perfetto格式的文件,转为systrace格式的:
python systrace.py --from-file=trace
转换的过程中,会有错误:这是因为如果不是adb形式的,它是没有开头和结尾的,所以不需要辨认了,直接把读到的data传进去就好了
data_start = re.search(TRACE_START_REGEXP, result).end(0)
AttributeError: 'NoneType' object has no attribute 'end'
def _read_trace_data(self):
with open(self._filename, 'rb') as f:
result = f.read()
try:
data_start = re.search(TRACE_START_REGEXP, result).end(0)
data = re.sub(ADB_IGNORE_REGEXP, '', result[data_start:])
except:
data = result
return self._preprocess_data(data)
35. chromium-webview-webview浏览器apk
webview浏览器apk,这个仓库只剩下apk了。源码在chromium项目中:https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview
使用webview的情况:https://developer.android.com/guide/webapps
尽管 WebView 对象增强了对界面的控制,但也有一些替代方法可以提供类似的功能,并且具有诸多优势:它们需要进行的配置更少、加载和执行速度可以更快、提供更强大的隐私保护并能访问浏览器的 Cookie。
如果您的应用出现以下情况,请考虑使用 WebView 的这些替代方法:
1. 如果您希望将用户引导至移动网站,请构建渐进式 Web 应用 (PWA)。
2. 如果您希望显示第三方网页内容,请向已安装的网络浏览器发送 Intent。
3. 如果您想避免离开应用来打开浏览器,或者想要自定义浏览器界面,请使用 Chrome 自定义标签页。
36. clang-LLVM的编译前端,支持代码静态检查
LLVM的编译前端和gcc相对
https://blog.csdn.net/zhouzhaoxiong1227/article/details/52166942 LLVM和Clang背后的故事
https://blog.csdn.net/xhhjin/article/details/81164076 简述 LLVM 与 Clang 及其关系
https://www.zhihu.com/column/clang 深入研究Clang
https://getting-started-with-llvm-core-libraries-zh-cn.readthedocs.io/zh_CN/latest/ LLVM编译器实战教程
Clang extras:
(1)Clang Check:语法检查
(2)Clang Format:格式化任意的c++代码,使它符合Google代码风格
(3)Clang Modernizer:代码重构工具
(4)Clang Tidy:这是一个剥绒机工具,它检查常见的编程错误,这些错误违背了LLVM或者Google的编码标准。
37. cldr-通用语言环境数据仓库,Common Locale Data Repository
通用语言环境数据仓库,Common Locale Data Repository
官网:http://cldr.unicode.org/
38. cn-cbor-基于json的简明二进制对象展现,c语言实现
基于json的简明二进制对象展现,c语言实现
hardware/interfaces/confirmationui/1.0/vts/functional/Android.bp 有使用到
39. compiler-rt-(runtime)项目为硬件不支持的低级功能提供目标特定的支持。
Compiler-RT(runtime)项目为硬件不支持的低级功能提供目标特定的支持。举例来说,32位目标通常缺少64位除法指令。Compiler-RT提供一个目标特定的优化的函数,它用32位指令实现64位除法,从而解决这个问题。它是libgcc的LLVM等价物,提供相同的功能。而且,它运行时支持地址和内存清洁(sanitizer)工具。
40. conscrypt-加密安全相关的库
https://blog.csdn.net/Innost/article/details/44081147 深入理解Android之Java Security第一部分
https://blog.csdn.net/Innost/article/details/44199503 深入理解Android之Java Security第二部分(Final)
JCE相关的信息:有加解密,密钥交换,消息摘要(Message Digest,比如MD5等),密钥管理等。
libcore/ojluni/src/main/java/java/security/Security.java注册了com.android.org.conscrypt.OpenSSLProvider(java框架)
com.android.org.conscrypt.OpenSSLProvider在conscrypt/repackaged/common/src/main/java/com/android/org/conscrypt/OpenSSLProvider.java文件中实现了具体的算法(android中的具体实现)
应用 -> java.security包 -> com.android.org.conscrypt.OpenSSLProvider中的具体实现(MD5,SHA-1,SHA-256等等算法的实现)
key -> base64编码 -> 传出去
证书:android/system/ca-certificates把一些顶级CA证书集成到系统中。目前通用格式为X.509格式。
keystore:存储key的一个文件
摘要:MD5计算
HMAC:加上密钥算摘要,就可以认证了
签名:证明摘要是正确的
JSSE相关的信息:Java平台对SSL/TLS的某种实现
SSL/TLS:TCP 之上的一个安全协议
服务器和客户端之间交换证书和key等
硬件支持keymaster HAL的作用:https://developer.android.com/training/articles/keystore
运行 Android 9(API 级别 28)或更高版本的受支持设备可拥有 StrongBox Keymaster,它是位于硬件安全模块中的 Keymaster HAL 的一种实现。该模块包含以下组成部分:
1. 自己的 CPU。
2. 安全存储空间。
3. 真实随机数生成器。
4. 可抵御软件包篡改和未经授权旁加载应用的附加机制。
检查存储在 StrongBox Keymaster 中的密钥时,系统会通过可信执行环境 (TEE) 证实密钥的完整性。
为支持低能耗的 StrongBox 实现,为一部分算法和密钥大小提供了支持:
1. RSA 2048
2. AES 128 和 256
3. ECDSA P-256
4. HMAC-SHA256(支持 8-64 字节密钥大小,含首末值)
5. Triple DES 168
使用 KeyStore 类生成或导入密钥时,您需要通过将 true 传递给 setIsStrongBoxBacked() 方法,指示在 StrongBox Keymaster 中存储密钥的偏好。
41. cpu_features-跨平台的用来检索CPU功能的c库-解析/proc/cpuinfo文件得到
跨平台的用来检索CPU功能的c库-解析/proc/cpuinfo文件得到
用法:代码中判断CPU是否支持这个功能,然后做相应的优化操作
#include "cpuinfo_x86.h"
static const X86Features features = GetX86Info().features;
void Compute(void) {
if (features.aes && features.sse4_2) {
// Run optimized code.
} else {
// Run standard code.
}
}
42. cpuinfo-有关/proc/cpuinfo的信息
有关/proc/cpuinfo的信息
判断主机CPU是否支持NEON功能
cpuinfo_initialize();
if (cpuinfo_has_arm_neon()) {
neon_implementation(arguments);
}
43. crcalc-构造实数计算器-用级数来计算实数
构造实数计算器-用级数来计算实数,系统自带的计算器会用到这个库
用泰勒级数的方式,来计算cos和sin这些函数,以得到精确的值
参考
1. 【CPU】ARM底层汇编之neon指令集优化(附实例)
https://blog.csdn.net/qq_38410730/article/details/103569527
2. NEON Intrinsics Quick Guide
https://gist.github.com/csarron/3191b401ec545f78022881f1805cae9a
3. 加密与安全
https://www.liaoxuefeng.com/wiki/1252599548343744/1255943717668160