如何在android ndk中包含一个使用posix标头的本机库

时间:2012-07-04 09:26:39

标签: android-ndk native static-libraries apk

我必须包含一个静态本机库(dsplink.a),它在android ndk项目中使用System V IPC。

将我的库包含在android.mk中,

    LOCAL_LDLIBS := ($MY-PATH)/dsplink.a

给出以下错误:

    _sync_usr.c:(.text+0x24b4): undefined reference to `semget'
    _sync_usr.c:(.text+0x24d4): undefined reference to `__errno_location'
    _sync_usr.c:(.text+0x24f4): undefined reference to `semget'
    _sync_usr.c:(.text+0x2538): undefined reference to `semctl'

semctl,semget,..函数包含在sys / sem.h中。 有没有办法包括图书馆?

1 个答案:

答案 0 :(得分:1)

可悲的是,这是不可能的。

从android-ndk-r8 / docs / system / libc / SYSV-IPC.html中提取

Android不支持System V IPC,即提供的设施 遵循标准Posix标题:

<sys/sem.h>   /* SysV semaphores */
<sys/shm.h>   /* SysV shared memory segments */
<sys/msg.h>   /* SysV message queues */
<sys/ipc.h>   /* General IPC definitions */

其原因在于,通过设计,它们导致全球化 内核资源泄漏。