我正在将一个现有的linux应用程序移植到android。该应用程序使用共享内存API,如shm_open()
等。
检查bionic in android source,我发现这些API不受支持。因此,我在构建期间遇到链接错误。
external/l2/avbtp.c:138: error: undefined reference to 'shm_open'
external/l2/avbtp.c:151: error: undefined reference to 'shm_unlink'
external/l2/avbtp.c:186: error: undefined reference to 'shm_unlink'
如何正确解决此问题?
答案 0 :(得分:2)
Android intentionally doesn't provide SysV IPC。尽量避免使用共享内存,或者,如果您真的想要,请查找使用ashmem
。
答案 1 :(得分:1)
好吧,我发现了这个github项目,它很有效! https://github.com/pelya/android-shmem
像魔术一样,它完美无缺。您可以使用shmget(),shmat()和shmdt()API无缝地在独立进程中使用android中的共享内存。试一试。