Windows下Android studio 搭建 android NDK 搭建 OLLVM 踩坑记录

news2024/11/24 9:52:55

1. 编译 ollvm-9.0.1

下载源码进行编译

https://github.com/heroims/obfuscator/tree/llvm-9.0.1
在这里插入图片描述

编译

这里有坑要注意 不能使用最新的 mingw 8.0.1 编译会报错
报错内容如下:

PS D:\OLLVM\obfuscator-llvm-9.0.1\build> cmake -G "MinGW Makefiles"  -DCMAKE_BUILD_TYPE=Release ..\..\obfuscator-llvm-9.0.1\
CMake Deprecation Warning at CMakeLists.txt:3 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Error at CMakeLists.txt:49 (project):
  The CMAKE_C_COMPILER:

    C:/MinGW/bin/gcc.exe

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.


CMake Error at CMakeLists.txt:49 (project):
  The CMAKE_CXX_COMPILER:

    C:/MinGW/bin/c++.exe

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


CMake Error at CMakeLists.txt:49 (project):
  The CMAKE_ASM_COMPILER:

    C:/MinGW/bin/gcc.exe

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "ASM" or the CMake cache entry CMAKE_ASM_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!

猜测可能的原因是 cmake版本和 mingw版本 对ollvm-9.0.1的cmakelists.txt的兼容性问题引起的

然后我重新下载mingw旧版本 我用的是 x86_64-5.4.0-release-posix-seh-rt_v5-rev0
mingw下载地址

编译命令
解压下载文件 后 进入解压文件目录

mkdir build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF ../../obfuscator-llvm-9.0.1
cmake --build .

在这里插入图片描述

配置Android NDK

下载 NDK 21.4.7075529

在这里插入图片描述

将编译内容复制到 下载的NDK21指定目录下

  1. 复制一份下载好的ndk 命名为21.4.7075529Ollvm9.0.1
  2. 复制 编译后的ollvm目录下的 obfuscator-llvm-9.0.1\build\bin 的clang.exe clang++.exe clang-format.exe 到21.4.7075529Ollvm9.0.1\toolchains\llvm\prebuilt\windows-x86_64/bin 目录下的
    3.复制 /build/lib/clang/9.0.1/include下面 stdarg.h 、stddef.h 、__stddef_max_align_t.h 、float.h 这四个文件复制到
    复制到 AndroidStudio使用的NDK目录 /toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include 文件夹下

在CMakeLists.txt中修改如下

 #设置llvm debug模式混淆编译
    SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mllvm -fla -mllvm -sobf")
    SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mllvm -fla -mllvm -sobf")
    
    #设置llvm release模式混淆编译
    SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mllvm -fla -mllvm -sub -mllvm -bcf -mllvm -sobf")
    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mllvm -fla -mllvm -sub -mllvm -bcf -mllvm -sobf")

单个函数混淆

__attribute((__annotate__("bcf")))
__attribute((__annotate__("fla")))
__attribute((__annotate__("sub")))
__attribute((__annotate__("split")))
__attribute((__annotate__("sobf")))
void func(){
	xxx
}

深度混淆

SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mllvm -bcf -mllvm -bcf_loop=4 -mllvm -bcf_prob=100 -mllvm -sub -mllvm -sub_loop=2 -mllvm -fla -mllvm -sobf -mllvm -split")

Android 编译错误

我在Android studio 下 使用cmake 版本’3.18.1’ 报错 编译不成功

    Build command failed.
Error while executing process D:\AndroidSDK\cmake\3.18.1\bin\ninja.exe with arguments {-C D:\AndroidCool\MyOllVM\app\.cxx\Debug\4q1o1o60\arm64-v8a myollvm}
ninja: Entering directory `D:\AndroidCool\MyOllVM\app\.cxx\Debug\4q1o1o60\arm64-v8a'
[1/2] Building CXX object CMakeFiles/myollvm.dir/native-lib.cpp.o
FAILED: CMakeFiles/myollvm.dir/native-lib.cpp.o 
D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --gcc-toolchain=D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Dmyollvm_EXPORTS  -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -std=c++11 -O0 -fno-limit-debug-info  -mllvm -fla -fPIC -MD -MT CMakeFiles/myollvm.dir/native-lib.cpp.o -MF CMakeFiles\myollvm.dir\native-lib.cpp.o.d -o CMakeFiles/myollvm.dir/native-lib.cpp.o -c D:/AndroidCool/MyOllVM/app/src/main/cpp/native-lib.cpp
Stack dump:
0.	Program arguments: D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe -cc1 -triple aarch64-none-linux-android21 -emit-obj -mrelax-all -mnoexecstack -disable-free -disable-llvm-verifier -discard-value-names -main-file-name native-lib.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu generic -target-feature +neon -target-abi aapcs -mllvm -aarch64-fix-cortex-a53-835769=1 -fallow-half-arguments-and-returns -dwarf-column-info -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=gdb -ffunction-sections -fdata-sections -coverage-notes-file D:\AndroidCool\MyOllVM\app\.cxx\Debug\4q1o1o60\arm64-v8a\CMakeFiles/myollvm.dir/native-lib.cpp.gcno -resource-dir D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\9.0.1 -dependency-file CMakeFiles\myollvm.dir\native-lib.cpp.o.d -sys-header-deps -MT CMakeFiles/myollvm.dir/native-lib.cpp.o -D myollvm_EXPORTS -D ANDROID -D _FORTIFY_SOURCE=2 -isysroot D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot -internal-isystem D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1 -internal-isystem D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/local/include -internal-isystem D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\9.0.1\include -internal-externc-isystem D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/aarch64-linux-android -internal-externc-isystem D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot/include -internal-externc-isystem D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include -O0 -Wformat -Werror=format-security -std=c++11 -fdeprecated-macro -fdebug-compilation-dir D:\AndroidCool\MyOllVM\app\.cxx\Debug\4q1o1o60\arm64-v8a -ferror-limit 19 -fmessage-length 0 -stack-protector 2 -fno-signed-char -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -mllvm -fla -o CMakeFiles/myollvm.dir/native-lib.cpp.o -x c++ D:/AndroidCool/MyOllVM/app/src/main/cpp/native-lib.cpp 
1.	D:/AndroidSDK/ndk/21.1.6352462_OLLVM/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include\stdlib.h:44:28: current parser token ';'
 #0 0x000000000326fea4 clang::ASTContext::adjustFunctionType(clang::FunctionType const*, clang::FunctionType::ExtInfo) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2e6fea4)
 #1 0x00000000031847b1 handleFunctionTypeAttr((anonymous namespace)::TypeProcessingState&, clang::ParsedAttr&, clang::QualType&) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2d847b1)
 #2 0x000000000318d82e processTypeAttrs((anonymous namespace)::TypeProcessingState&, clang::QualType&, TypeAttrLocation, clang::ParsedAttributesView&) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2d8d82e)
 #3 0x000000000319482d GetFullTypeForDeclarator((anonymous namespace)::TypeProcessingState&, clang::QualType, clang::TypeSourceInfo*) (.constprop.994) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2d9482d)
 #4 0x000000000319b6eb clang::Sema::GetTypeForDeclarator(clang::Declarator&, clang::Scope*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x2d9b6eb)
 #5 0x0000000002dd2ea6 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x29d2ea6)
 #6 0x0000000002dd38dc clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x29d38dc)
 #7 0x0000000002bec540 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27ec540)
 #8 0x0000000002bf90b1 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27f90b1)
 #9 0x0000000002bd45a5 clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d45a5)
#10 0x0000000002bd4e61 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.245.constprop.249) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d4e61)
#11 0x0000000002bd4e9b clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d4e9b)
#12 0x0000000002bd8619 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d8619)
#13 0x0000000002c0bb8c clang::Parser::ParseLinkage(clang::ParsingDeclSpec&, clang::DeclaratorContext) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x280bb8c)
#14 0x0000000002bd4870 clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d4870)
#15 0x0000000002bd4e61 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.245.constprop.249) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d4e61)
#16 0x0000000002bd4e9b clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d4e9b)
#17 0x0000000002bd8619 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d8619)
#18 0x0000000002bd9720 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d9720)
#19 0x0000000002bd19ee clang::ParseAST(clang::Sema&, bool, bool) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x27d19ee)
#20 0x000000000255b506 clang::CodeGenAction::ExecuteAction() (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x215b506)
#21 0x000000000208e449 clang::FrontendAction::Execute() (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1c8e449)
#22 0x000000000205fae0 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1c5fae0)
#23 0x000000000211129a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x1d1129a)
#24 0x00000000004025ad cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x25ad)
#25 0x0000000003ce8476 main (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x38e8476)
#26 0x00000000004013e8 __tmainCRTStartup (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x13e8)
#27 0x000000000040151b (D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe+0x151b)
#28 0x00007fff4c757614 (C:\WINDOWS\System32\KERNEL32.DLL+0x17614)
#29 0x00007fff4dc426a1 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x526a1)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
Obfuscator-LLVM clang version 9.0.1  (based on Obfuscator-LLVM 9.0.1)
Target: aarch64-none-linux-android21
Thread model: posix
InstalledDir: D:\AndroidSDK\ndk\21.1.6352462_OLLVM\toolchains\llvm\prebuilt\windows-x86_64\bin
clang++: note: diagnostic msg: PLEASE submit a bug report to http://o-llvm.org and include the crash backtrace, preprocessed source, and associated run script.
clang++: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: C:\Users\THINKCAR\AppData\Local\Temp\native-lib-6bd552.cpp
clang++: note: diagnostic msg: C:\Users\THINKCAR\AppData\Local\Temp\native-lib-6bd552.sh
clang++: note: diagnostic msg: 

********************
ninja: build stopped: subcommand failed.

我经过测试发现 只要使用到 c++ 标准的头文件 类似于下面的

#include <string> 
#include <iostream>

程序就会出现上面的错误
不知道为什么 但是我在另外一台电脑上测试 又是可以正常使用这些头文件的 不知道为什么

#参考
https://www.jianshu.com/p/85e0abbc7f53
https://blog.csdn.net/weixin_42600398/article/details/113572340

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浏览器 HTTPS 协议的相关知识点有哪些?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言HTTPS协议的概念HT…

腾讯云私有云平台运维面试

文章目录 概述JD 岗位描述一面二面三面HR面 概述 根据会议将面试问题进行总结&#xff0c;很多问题感觉当时没回答好&#xff0c;这是为啥呢&#xff1f;应该还是不熟练吧&#xff0c;或者不善于表达。将次经历分享出来&#xff0c;大家多练练。 JD 岗位描述 私有云平台运维…

io.netty学习(十四)Netty 编码器

目录 前言 MessageToByteEncoder 抽象类 MessageToMessageEncoder 抽象类 总结 前言 上一篇我们讲解了解码器的相关知识&#xff0c;其中也提到了编码器的定义。 编码器就是用来把出站&#xff08;针对本身来讲&#xff0c;发送都是出站&#xff0c;接收都是入站&#xf…

TIA博途_字符转换为字符串以及截取字符串有效字符的具体方法示例

TIA博途_字符转换为字符串以及截取字符串有效字符的具体方法示例 情景再现: 在做某些通信相关的项目时,可能会遇到通信接收到的字符串是以字节的形式传送过来的字符,此时就需要我们对接收到的这些字符进行处理,从而获取我们实际需要的字符或字符串。 如下图所示,打开博途…

一文了解什么是Dubbo

Dubbo学习 Dubbo应用架构的演变RPC&#xff08;远程过程调用&#xff09;RPC介绍RPC组件RPC调用 Apache Dubbo概述Dubbo简介Dubbo的架构 服务注册中心ZookeeperZookeeper介绍运行zookeeper Dubbo的快速开发Dubbo管理控制台治理中心 Dubbo Dubbo是一个分布式服务框架&#xff0…

基于Servlet+JDBC实现的基础博客系统>>系列3 -- Servlet后端服务器搭建

目录 前言 1. 前期准备 2. Model层 2.1 数据库的设计 2.2 数据库表对应的实体类实现 User类 Blog类 2.3 JDBC 工具类实现 2.4 UserDao 的实现 2.5 BlogDao 的实现 3. Controller 层实现 3.1 博客列表页 3.1.1 约定前后端交互接口 3.1.2 编写后端代码 3.1.3 编写…

【Shell1】shell语法,ssh/build/scp/upgrade,环境变量

文章目录 1.shell语法&#xff1a;shell是用C语言编写的程序&#xff0c;是用户使用Linux的桥梁&#xff0c;硬件>内核(os)>shell>文件系统1.1 变量&#xff1a;readonly定义只读变量&#xff0c;unset删除变量1.2 函数&#xff1a;shell脚本传递的参数中包含空格&…

聊天GPT如何运作?| 景联文科技

什么是聊天 GPT&#xff1f; Chat GPT 被定义为一种生成语言模型。在实践中&#xff0c;它被理解为经过训练和设计以进行自然对话的人工智能聊天。 聊天 GPT 的用途是什么&#xff1f; 1.借助 GPT&#xff0c;您可以生成各种风格、主题和语言的连贯且写得很好的文本。此外&a…

【比赛writeup】2023省赛-Reverse-Re2

2023省赛-Reverse-Re2 一、概要 1、标题&#xff1a;Re2 2、关键字&#xff1a;换表BASE64 3、比赛&#xff1a;2023省赛 4、工具&#xff1a;IDAx64、python 二、开始 1、题目分析 逆向的题目&#xff0c;找到关键字符串&#xff0c;找到关键函数&#xff0c;分析函数逻辑…

ISO15765-2 网络层,通俗易懂,最佳入门

I. 简介 ISO15765-2协议网络 ISO15765-2协议网络是一种用于汽车电子系统中的通信协议。它定义了在控制区域网络&#xff08;CAN&#xff09;上使用的诊断通信的协议规范&#xff0c;包括物理层、数据链路层、网络层和传输层。该协议的主要目的是使汽车制造商和维修技术人员能够…

Vue2,Vue3 computed计算属性用法

计算属性就是当依赖的属性的值发生变化的时候&#xff0c;才会触发他的更改&#xff0c;如果依赖的值&#xff0c;不发生变化的时候&#xff0c;使用的是缓存中的属性值。 computed购物车案例 1.Vue2版 <template><div><div><input v-model"keywo…

linux系统Nginx网站服务

文章目录 一、Nginx简介二、Nginx 相对于 Apache 的优点三、nginx 应用场景1.同步与异步2.阻塞与非阻塞 四、Nginx安装及运行控制1、编译安装2、访问控制1、访问状态统计2、基于授权的访问控制3、基于客户端的访问控制4、基于域名的 Nginx 虚拟主机5、基于IP 的 Nginx 虚拟主机…

2.3ORBSLAM3之相机模型与畸变模型

1.简介 主要内容&#xff1a; 1. 对SLAM中常见的相机模型进行介绍&#xff0c;包括针孔相机模型和鱼眼相机模型 2. 对每种相机模型的畸变模型进行介绍 3. 对VSLAM中常见的几种去畸变方法进行介绍 4. 对常见的几种相机标定方法进行总结对于VSLAM来说关于相机投影模型和畸变模型…

Mybatis如何解决循环依赖问题

1、Mybatis如何解决循环依赖问题 mybatis的循环依赖&#xff0c;即是mapper.xml里面的A查询的resultMap包含了B属性&#xff08;B属性是通过子查询得到的&#xff09;&#xff0c;而B属性中又包含了A&#xff08;B查询的resultMap中又包含了A的查询&#xff09;&#xff0c;就…

【系统架构】第五章-软件工程基础知识(软件测试、净室软件工程、基于构件的软件工程、 软件项目管理)

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 软件测试 一、测试方法 以测试过程中程序执行状态为依据可分为静态测试&#xff08;ST&#xff09;和动态测试&#xff08;DT&#xff09; 以具体实现算法细节和系统内部结构的相关情况为根据…

【Leetcode60天带刷】day35——452. 用最少数量的箭引爆气球,435. 无重叠区间,763.划分字母区间

​ 题目&#xff1a; 452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着…

SuperMap GIS基础产品云GIS FAQ集锦(3)

SuperMap GIS基础产品云GIS FAQ集锦&#xff08;3&#xff09; 【iServer】如何自定义iServer服务能力文档中提供者的信息&#xff1f; 【解决办法】操作步骤如下&#xff1a; 1&#xff09;进入iServer管理界面&#xff0c;依次点击服务-服务接口&#xff1b; 2&#xff09;点…

PL SQL结构化编程

第一章、存储过程 1.1、概念 存储过程是一个命名的程序块&#xff0c;包括过程的名称、过程使用的参数&#xff0c;以及过程执行的操作。 &#xff08;类似于java中的一种函数&#xff0c;但是存在区别&#xff09; 可以指定输入参数&#xff0c;和输出参数。 1.2、创建存…

Elasticsearch 地理空间计算

地理位1置搜索&#xff1a;使用查询API进行搜索 1、Geo Distance Query Geo Distance Query是在给定的距离范围内搜索数据的查询。例如&#xff0c;可以搜索给定地理位置附近指定距离内的所有文档。 GET /my_index/_search {"query": {"bool" : {"fi…