0

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

包括我在 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 中。有没有办法包括图书馆?

4

1 回答 1

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 */

其原因是,根据设计,它们会导致全局内核资源泄漏。

于 2012-07-04T09:31:20.957 回答