导游网站如何建设的,建设企业网站官网u盾登录,安顺 网站建设,king wordpress一、环境搭建#xff1a; 系统#xff1a;win10_X64 ndk版本#xff1a;ndk-r12b#xff08;ndk-r12b后续版本也适用#xff09; cmake-3.9.1-win64-x64.msi 用于针对不同编译器生成源代码构建文件#xff0c;如使用VS则生成(.sln)等VS配置文件#xff0c;如果使用gcc则… 一、环境搭建 系统win10_X64 ndk版本ndk-r12bndk-r12b后续版本也适用 cmake-3.9.1-win64-x64.msi 用于针对不同编译器生成源代码构建文件如使用VS则生成(.sln)等VS配置文件如果使用gcc则生成(Makefile) mingw-w64-install.exe 基于windows的GNU gcc编译器 python2.7 跑python脚本不要使用3.0及以上版本 cmakemingwpython下载地址百度网盘https://pan.baidu.com/s/1v49gBKzF-2VAqMywvtnlUw 密码hd7z 添加环境变量C:\Python27 C:\Program Files (x86)\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin C:\Program Files\CMake\bin 环境变量请根据软件具体安装路径配置 二、编译OLLVM 1、搞清楚概念LLVM 和 OLLVM LLVM是lowlevel virtual machine的简称是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。 LLVM 诞生于2003.10伊利诺伊大学香槟分校创始人ChrisLattner现任苹果公司『开发者工具』部门的主管。 Obfuscator-LLVM (OLLVM)是瑞士西北应用科技大学安全实验室针对LLVM编译组件开发的代码混淆工具该工具完全开源目的是为了增加逆向工程的难度保证代码的安全性。 Obfuscator-LLVM (OLLVM)集成了编译器并且兼容LLVM支持的所有语言C,C, Objective-C, Ada and Fortran和平台(x86, x86-64, PowerPC, PowerPC-64,ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ,and XCore)。 2、编译说明 git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.gitmkdir buildcd buildcmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPERelease ../obfuscator/ mingw32-make -j7 网上很多资料上使用make命令而不是mingw32-make命令在我所安装的mingw并没有提供make命令前面说明了我是在win10 64系统上通过mingw-w64-install.exe安装的。可能是系统不一样的原因。 cmake如果不指定参数的话会默认去选择当前电脑里已有的编译器如果安装了VS的话会自动去查找VS编译器 如果打算使用vs编译 cmake -DCMAKE_BUILD_TYPERelease ../obfuscator/ 会生成32位的依赖版本 cmake -G “Visual Studio 15 2017 Win64” -DCMAKE_BUILD_TYPERelease ../obfuscator/ “Visual Studio 15 2017 Win64” 中的15和2017是指VS中平台工具集的编号与VS版本号的对应关系14对应201512对应2013如果要用VS编译注意根据你所安装的VS版本进行配置。上面这种方法就会生成64位版本的编译环境不过在测试编译时32位正常编译通过64位踩了很多坑所以还是不建议使用VS编译。 使用MinGw编译时需要加上参数 cmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPERelease ../obfuscator/ 3、编译过程大约需要30分钟左右或者更长编译完成后build文件夹下可看到bin 和 lib 两个文件夹这是后续需要用到的。 三、在ndk中使用ollvm 1、android-ndk-r12b\toolchains路径下会有个 llvm 文件夹 ,复制 llvm 文件夹的一个副本到相同的路径即android-ndk-r12b\toolchains路径下然后重命名该文件夹为 ollvm-4.0 2、删掉android-ndk-r12b\toolchains\ollvm-4.0\prebuilt\windows-x86_64路径下的bin 和 lib64 文件夹将上述build目录下的bin 和 lib 两个文件夹拷贝到路径android-ndk-r12b\toolchains\ollvm-4.0\prebuilt\windows-x86_64; 3、在 android-ndk-r12b\build\core\toolchains 路径下新建目录 arm-linux-androideabi-clang-ollvm4.0拷贝目录 arm-linux-androideabi-clang 下的文件 config.mk 与 setup.mk 到 arm-linux-androideabi-clang-ollvm4.0 中修改setup.mk文件; ## Override the toolchain prefix############################# 原始配置 #############################LLVM_TOOLCHAIN_PREBUILT_ROOT : $(call get-toolchain-root,llvm)#LLVM_TOOLCHAIN_PREFIX : $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/############################################################################################# 修改后 #############################OLLVM_NAME : ollvm-4.0LLVM_TOOLCHAIN_PREBUILT_ROOT : $(call get-toolchain-root,$(OLLVM_NAME))LLVM_TOOLCHAIN_PREFIX : $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/#其他配置不做修改...... config.mk 保存的是该编译链对应的 CPU 架构所以上面修改完只能编译 armeabi 和 armeabi-v7a 架构的 so。如果需要编译其他架构需要做相应的修改。文件夹名也必须按照严格的格式如 mips 的需要添加文件夹mipsel-linux-android-clang-ollvm4.0修改相应的 setup.mk 文件。 四、ollvm使用 使用 ollvm 进行 ndk 的编译需要对 Application.mk 和 Android.mk 文件做相应的修改。 Android.mk 中添加混淆编译参数 LOCAL_CFLAGS -mllvm -sub -mllvm -bcf -mllvm -fla 参数相关的文档可以看 github 上的wiki: https://github.com/obfuscator-llvm/obfuscator/wiki Application.mk 中配置 NDK_TOOLCHAIN_VERSION APP_ABI : x86 armeabi-v7a x86_64 arm64-v8a mips armeabi mips64NDK_TOOLCHAIN_VERSION : clang-ollvm4.0五、参考文献 https://www.anquanke.com/post/id/86384 http://blog.csdn.net/wangbaochu/article/details/45370543 转载于:https://www.cnblogs.com/shuqinjun/p/8595143.html