首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHash致命错误:找不到'sys/sysctl.h‘文件

PHash致命错误:找不到'sys/sysctl.h‘文件
EN

Stack Overflow用户
提问于 2016-09-26 19:33:34
回答 1查看 3.2K关注 0票数 1

我正在尝试将c++本机项目添加到我的库项目中。

我关注了this教程

我知道fatal error: 'sys/sysctl.h' file not found不知道为什么。

我遵循了以下步骤:

1)创建一个JNI文件夹,并将所有源文件和包装器放入其中。

2)创建CMakeLIsts.txt

这是我的CMakeLIsts.txt

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.4.1)

add_library(pHash-jni SHARED
            pHash-jni.cpp)


target_link_libraries(pHash-jni log android)

3)将我的local.propreties更新为:

代码语言:javascript
运行
复制
    ndk.dir=/home/maxim/Android/Sdk/ndk-bundle
    sdk.dir=/home/maxim/Android/Sdk

4)将build.gradle更新为:

代码语言:javascript
运行
复制
apply plugin: 'com.android.library'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang'
                cppFlags "-fexceptions"

            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/jni/CMakeLists.txt"
        }
    }
    productFlavors {
        arm7 {
            // in the future, ndk.abiFilter might also work
            ndk {
                abiFilter 'armeabi-v7a'
            }
        }
        arm8 {
            ndk {
                abiFilters 'arm64-v8a'
            }
        }
        arm {
            ndk {
                abiFilter 'armeabi'
            }
        }
        x86 {
            ndk {
                abiFilter 'x86'
            }
        }
        x86_64 {
            ndk {
                abiFilter 'x86_64'
            }
        }
        mips {
            ndk {
                abiFilters 'mips', 'mips64'
            }
        }
        all {
            ndk {
                abiFilters 'mips', 'mips64', 'x86', 'x86_64'
            }
        }
    }
    sourceSets { main { jni.srcDirs = ['src/main/jni', 'src/main/jni/'] } }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
}

5)将gradle.properties更新为:

代码语言:javascript
运行
复制
android.useDeprecatedNdk=true
EN

回答 1

Stack Overflow用户

发布于 2016-09-27 03:46:02

代码语言:javascript
运行
复制
$ find android-ndk-r13/platforms/ -name sysctl.h                                                                                                             
../../android-ndk-r13/platforms/android-19/arch-arm/usr/include/linux/sysctl.h
more of the same...

安卓没有<sys/sysctl.h>,但它有<linux/sysctl.h>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39701730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档