Git Product home page Git Product logo

Comments (4)

GitChenCpp avatar GitChenCpp commented on August 23, 2024

OLLVM 12.x 编译命令:
cmake -G "Ninja" -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="ARM" -DBUILD_SHARED_LIBS=OFF ../llvm
CMake 版本: 最新 3.25
NinJa: 1.11

我看 5月份, 就有人提过这个 issue, 肯定不少人有这问题, 麻烦看下啊

from obfuscator.

heroims avatar heroims commented on August 23, 2024

最新的AS上跑首先确定ndk的llvm是从google那下载修改移植的,通用版本不适用最新ide

from obfuscator.

anjiuzhe avatar anjiuzhe commented on August 23, 2024

@heroims 大佬,你好,我的llvm是从google那下载修改移植的。编译出来后替换还是报错啊,求解决。
具体步骤:

  1. 在使用的ndk版本23.1.7779620的toolchains/llvm/prebuilt/darwin-x86_64/bin/目录下执行clang -v得到llvm的commit hash,然后根据hash去谷歌仓库下载一份相同的代码

image

image

  1. 根据上面的clang -v得知llvm是12.0.8版本的,所以根据大佬你的12.x通用版本进行手动修改移植

  2. 然后就是开始编译了,进入到项目根目录执行如下命令:
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_CREATE_XCODE_TOOLCHAIN=ON ../llvm
    make -j7

  3. 经过漫长的等待终于好了,但是发现编译出来的lib里面的clang是12.0.0版本的,而不是ndk里面的12.0.8版本。这个有点奇怪,根据同一个commit hash下载的代码,编译出来的版本为啥不一样呢?

image

image

  1. 最后还是尝试替换文件看下结果如何,分别将build/bin目录下的clang、clang++、clang-12、clang-format四个文件复制替换到 ndk目录/toolchains/llvm/prebuilt/darwin-x86_64/bin,然后进入到build/lib/clang/12.0.0/include目录下复制stdarg.h、stddef.h、__stddef_max_align_t.h、float.h、stdbool.h五个头文件到ndk目录/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include 文件夹下

  2. 最后就是在项目的CMakeLists.txt加入如下flag开启混淆进行编译:

set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mllvm -sub -mllvm -sobf -mllvm -fla ")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mllvm -sub -mllvm -sobf -mllvm -fla")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mllvm -sub -mllvm -sobf -mllvm -fla" )
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mllvm -sub -mllvm -sobf -mllvm -fla" )

编译报错了。。

image

不知道是不是上面clang版本不对的问题,我在 https://github.com/llvm/llvm-project 也没有找到llvm-project的clang12.0.8的版本,麻烦大佬解答下,这个编译过程太漫长了,一步步尝试很费时间。谢谢了

from obfuscator.

kotori2 avatar kotori2 commented on August 23, 2024

@anjiuzhe
建议看这个编译NDK:https://android.googlesource.com/toolchain/llvm_android/+/master/README.md, Instructions to rebuild a particular toolchain release 这一节
编译完以后把编译好的文件替换回同版本NDK的 toolchains/llvm/prebuilt/[system arch]

from obfuscator.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.