我必须包含一个静态本机库(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中。 有没有办法包括图书馆?
答案 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 */
其原因在于,通过设计,它们导致全球化 内核资源泄漏。