第一次先使用的CentOS_v6.4_x64,结果被glibc和gcc版本搞迷糊了,使用o-llvm的clang -v,直接段错误,被4.4.7版本的gcc恶心到了
然后切换到Fedora_v22_x64
sudo dnf install gcc gcc-c++
sudo dnf install cmake
然后参照这里的说明进行编译
`clang -fPIC -O2 -Wall -c hello.c -o hello.o -mllvm -fla -mllvm -sub -mllvm -bcf`
`clang -shared hello.o -o libhello.so -static-libgcc`
32位库
sudo dnf install glibc-devel.i686
然后-m32一下
下载ndk-r10e
mv toolchains toolchains_bak
mkdir toolchains
cp -r toolchains_bak\llvm-3.6 toolchains\obfuscator-llvm-3.6
rm -rf toolchains\obfuscator-llvm-3.6\prebuilt\x86_64....
然后把编译出来的bin/lib目录拷进来
接下来配置工具链,编译哪个平台就拷进来,文件夹加个obfuscator后缀,setup.mk配置下llvm路径
配置jni工程的Android.mk和Application.mk,主要添加编辑混淆参数和指定工具链(clang3.6-obfuscator)
我编译的时候遇到arm64/x86_64的clang编译没问题,链接的时候报找不到ld,然后把对应工具链的gcc版本拷进来链接就成功了(但如果一开始就把gcc工具链拷进来就不走clang进行编译,指定的混淆参数-mllvm也就报错了)
再就是mip64在linux的host和osx的host下都编不出来,参考了五、如何解决NDK + LLVM-Obfuscator 无法编译x86的问题?,对比了branch-3.6.1的代码,已经加了那些“*-linux-android”了呀,不知道问题出在哪
osx下工具的下载、编译基本跟linux没啥区别,同样参照这里对XCode的编译插件进行配置
在编译库的时候出了点问题,o-llvm的工具链不认得这两个编译参数 -gmodules -fembed-bitcode-marker,网上查了会儿都没找到类似问题,不知道是XCode版本(7.0.1)还是o-llvm版本(3.6.1)导致的,于是就开始看编译参数
作为头个iOS工程,看了没几个就找到了参数,我表示很开心
-gmodules: Obfuscator 3.6.1 - Code Generation: Generate Debug Symbols: 原来yes,改成no
-fembed-bitcode-marker: Build Option: Enable Bitcode: 原来yes,改成no
ok啦