Tag: android ndk

Android ndk build无法构建32bit可执行文件

根据我的第一个问题 ,我尝试在我的应用程序中包含fanotify.h标头。 该应用程序基于fsmon (一个使用fanotify系统调用的小应用程序),我为了我的目的更改了一些代码行并创建了一个Android.mk makefile: APP_PLATFORM := android-23 TARGET_PLATFORM := android-23 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Enable PIE manually. Will get reset on $(CLEAR_VARS). This # is what enabling PIE translates to behind the scenes. LOCAL_CFLAGS += -fPIE -DHAVE_FANOTIFY=1 -DHAVE_SYS_FANOTIFY=0 LOCAL_LDFLAGS += -fPIE -pie # give module name LOCAL_MODULE := fsmon # include […]

sigemptyset()NDK UnsatisfiedLinkError dlopen()

我的Android NDK应用程序中的某个C代码调用signal.h中定义的sigemptyset()函数。 我正在使用NDK-r9构建我的项目。 在编译c代码之后,我的库文件名为“libnative-service.so” 。 但是在运行应用程序时,我得到关于sigemptyset()的以下错误。 我错过了什么? 09-22 15:13:09.102: E/art(3718): dlopen(“/data/app-lib/com.project/libnative-service.so”, RTLD_LAZY) failed: dlopen failed: cannot locate symbol “sigemptyset” referenced by “libnative-service.so”… 09-22 15:13:09.103: D/AndroidRuntime(3718): Shutting down VM 09-22 15:13:09.106: E/AndroidRuntime(3718): FATAL EXCEPTION: main 09-22 15:13:09.106: E/AndroidRuntime(3718): Process: com.project, PID: 3718 09-22 15:13:09.106: E/AndroidRuntime(3718): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol “sigemptyset” referenced by “libnative-service.so”…

在Android NDK中使用pngquant lib(libimagequant)

我想在OS X上使用NDK r10(64位)在我的Android项目中使用pngquant.org/lib上的png量化库。 我在编译库方面取得了进展。 我现在的问题是无法解析size_t类型。 我尝试包含以下文件夹: LOCAL_C_INCLUDES := $(NDK_TOOLCHAIN)/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9/include 但这没有用。 我会对包含pngquant的空工作Android项目感兴趣。 任何帮助都非常感谢。 NB对不起更改问题,但我提出的原始问题中有一些不正确的事实。

如何在android中使用arm_acle C语言扩展

有许多使用arm neon intrinsics for android的例子,ndk甚至有一个例子。 我已经得到了没有问题的工作。 Arm还提供ACLE(Arm C语言扩展),但我可以通过示例找到几乎没有的东西。 arm文档本身仅建议包含arm_acle.h头文件,但是我仍然会出错。 谷歌几乎没有提供任何援助:)同时,搜索arm社区委员会的结果也很少。 人们不使用acle,而是选择内联汇编吗? 当我参与arm_acle.h并尝试使用__ssat()调用时,我必须进一步定义一个指令__ARM_FEATURE_CRC32,并在构建时得到错误“错误:’__ builtin_arm_qadd’未在此范围内声明” 标头看起来不包含任何依赖项,文档列表没有特定的链接依赖项。 任何建议? 还是我忽略了一些基本的东西? 附加信息:我的目标arch是armv7-a-neon,在构建时在make文件中正确检测到。 然后我进一步定义“-mfloat-abi = softfp -mfpu = neon -march = armv7”,但无济于事。 如果我撤消我的额外调试定义,我只是得到“错误:#error”ACLE内在支持未启用。“(霓虹灯支持和检测成功)搜索我的代码库,arm_acle.h头文件仅用于clang 主机工具,而arm_neon.h存在于几个预编译工具臂目录中。 正如我所说,arm_neon工作检测工作正常,运行正常,这是arm_acle组件不起作用。 搜索http://androidxref.com等在线存储库似乎表明只支持霓虹灯?

NDK错误…在做ndk-build时

尝试执行NDK构建时出现以下错误…任何人都可以帮助我吗? lmImf/ImfHuf.cpp:133: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::invalidTableEntry()’: D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:141: undefined reference to `__cxa_allocate_exception’ D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:141: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::tooMuchData()’: D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:93: undefined reference to `__cxa_allocate_exception’ D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:93: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::invalidCode()’: D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:109: undefined reference to `__cxa_allocate_exception’ D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:109: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `invalidTableSize’: […]

在C中为Android编译库

我已经安装了SDK,NDK,JDK和Cygwin。 我想知道是否需要编辑库代码以使它们为Android编译(armv7)。 我基本上需要为Android安装各种C应用程序,但它们都依赖于第三方库,如PCRE,OpenSSL等。 我的经验告诉我PCRE编译没有错误的Windows,但我们在这里谈论Android(运行Linux内核)。 我是否需要为库中的每个函数编写一个C包装器以满足JNI调用约定?

Android NDK wifi示例

我想在android中使用NDK在c代码的帮助下使用WIFI的function。 我不想将Java API用于WIFI。 我试过谷歌以及stackoverflow,但我没有任何例子。 我只是想知道,让我知道是否有可能? 我找到了一些用于WIFI的 Android API。 但我对实施没有任何了解。

如何在Android.mk的LOCAL_CFLAGS中动态获取当前编译器目标文件名?

我目前正在尝试使用Android的NDK构建本机模块。 我的项目包含几个源文件(例如: FILENAME .c),对于每个源文件,我需要在其CFLAGS( -DOPERATION_FILENAME )中声明一个定义。 为此,我需要动态获取Android NDK交叉编译器的当前目标文件的名称,并将其用于定义值。 我找不到任何有关如何执行此操作的信息,并且Makefile方式( CFLAGS + = -DOPERATION_ echo $* | sed ‘s/_$$//’ )不适用于此处。 我目前的Android.mk看起来像这样: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := libmpn LOCAL_SRC_FILES := \ LOCAL_CFLAGS := \ -std=gnu99 \ -DHAVE_CONFIG_H \ -D__GMP_WITHIN_GMP \ -O2 \ -pedantic \ -fomit-frame-pointer \ -mfloat-abi=softfp \ -DOPERATION_`echo $* | sed ‘s/_$$//’` […]

为什么缺少某些传感器的枚举值? 使用它们是否安全?

似乎中缺少某些传感器的枚举值。 该文件定义了以下枚举: /* * Sensor types * (keep in sync with hardware/sensor.h) */ enum { ASENSOR_TYPE_ACCELEROMETER = 1, ASENSOR_TYPE_MAGNETIC_FIELD = 2, ASENSOR_TYPE_GYROSCOPE = 4, ASENSOR_TYPE_LIGHT = 5, ASENSOR_TYPE_PROXIMITY = 8 }; 评论说这个枚举与同步(它没有暴露,它是android源代码的一部分)。 但是在我发现了更多有用的传感器的值 ,如压力,温度和湿度传感器: #define SENSOR_TYPE_ACCELEROMETER (1) #define SENSOR_TYPE_GEOMAGNETIC_FIELD (2) #define SENSOR_TYPE_ORIENTATION (3) #define SENSOR_TYPE_GYROSCOPE (4) #define SENSOR_TYPE_LIGHT (5) #define SENSOR_TYPE_PRESSURE (6) #define SENSOR_TYPE_TEMPERATURE (7) […]

如何在android studio中启用霓虹灯来构建和调试本机代码(c)?

我指的是它可能是调试cc-in-android-studio吗? Yuchen Zhong的最后一个答案也做了一些基本的例子,我也能够构建和调试。 所以现在我正在尝试使用我的旧应用项目做同样的事情。 我的旧应用程序buil.gradle是 apply plugin: ‘com.android.application’ android { compileSdkVersion 18 buildToolsVersion “23.0.1” defaultConfig { applicationId “pku……” minSdkVersion 9 targetSdkVersion 17 sourceSets.main { jni.srcDirs = [] jniLibs.srcDir ‘C:/Users/Admin/AndroidStudioProjects/and…./app/src/main/libs’ } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’ ndk { debuggable = true } } debug { debuggable = true jniDebuggable = true […]