相关疑难解决方法(0)

LLVM在Android NDK工具链中的用途是什么?

LLVM在Android NDK工具链中的用途是什么?


简要回顾一下:

我在Ubuntu上使用Gradlew构建本地项目,目标是arm和x86_64体系结构。似乎LLVM被用来调用arm-linux-androideabi-4.9以及x86_64(?)的C / C ++编译器

以下内容摘自armeabi-v7a / ndkBuild_build_output.log:

/ home / mypc / Android / android-ndk-r17c / toolchains / llvm / prebuilt / linux-x86_64 / bin / clang ++ -MMD -MP -MF / home / mypc / git / android-project-1 / build / intermediates / ndkBuild /debug/obj/local/armeabi-v7a/objs-debug/module-5/stream_cpp.od -gcc-toolchain /home/mypc/Android/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt / linux-x86_64 -fpic -ffunction-sections -funwind-tables -fstack-protector-strong -Wno-invalid-command-line-argument ...

..,以下内容摘自x86_64 / ndkBuild_build_output.log:

/ home / mypc / Android / android-ndk-r17c / toolchains …

c++ linux android toolchain android-ndk

7
推荐指数
2
解决办法
3225
查看次数

CMake:用于发行版本的独立于平台的二进制剥离

您如何才能为CMakefor gccclang作为后处理步骤添加二进制剥离,但仅在发行版中?MSVC默认情况下会删除,因此不必进行处理。

其中一个问题是,clang没有一个-s编译标志,但gcc这样做,这样是行不通的。

另一个想法是使用strip命令。该-s开关再次上存在Linux,但不是XCode(这是Apple的开发工具链)。

因此,最后的选择是使用该strip命令,除了二进制本身之外,不带任何参数,而二进制本身似乎是一个不错的通用解决方案。如何使用CMake

c++ strip cmake

5
推荐指数
1
解决办法
943
查看次数

在 Android 上构建 NDK 的 CMAKE 不遵守 gradle 的标志

我有一个 Android NDK 项目,我正在尝试通过Gradle + CMake构建

构建.gradle:

apply plugin: 'com.android.library'

allprojects {
    repositories {
        jcenter()
        google()
    }
}

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
                arguments "-DANDROID_ABI=armeabi-v7a",
                          "-DANDROID_PLATFORM=android-16",
                          "-DANDROID_STL=gnustl_static",
                          "-DANDROID_CPP_FEATURES=rtti exceptions",
                          "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=libs"
            }
        }
    }

    buildTypes {
        release {
            ndk {
                abiFilters "armeabi-v7a"
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            ndk {
                abiFilters "armeabi-v7a"
            }
        }
    }
    externalNativeBuild {
        cmake { …
Run Code Online (Sandbox Code Playgroud)

android cmake android-ndk android-gradle-plugin

3
推荐指数
1
解决办法
900
查看次数