2012-07-04 98 views
0

中包含使用posix頭文件的本機庫我必須包含一個靜態本機庫(dsplink.a),它在Android ndk項目中使用System V IPC。如何在android ndk

包括我在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

不幸的是,這是不可能的。

從提取的Android NDK-R8 /文檔/系統/的libc/SYSV-IPC.html

Android不支持系統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 */ 

其原因是由於這樣的事實,通過設計,它們導致全局內核資源泄漏。

+0

感謝您的答覆。我可以使用相同的庫創建一個可執行文件'hello'並在終端中運行它作爲./hello.It工作得很完美。有沒有辦法創建一個apk文件並以相同的方式運行。 – 123

+0

如何創建可執行文件(NDK?) 並在哪個終端中運行它? (adb外殼?) –

+0

我已經創建了使用我的主板兼容工具鏈的可執行文件。並且我在連接到主機ubuntu PC(在minicom中)的串行端口終端中運行可執行文件。 – 123