I am porting an existing linux application to android. The application is using shared memory API's like shm_open() etc.
Checking bionic in android source, I see that these API's are not supported. Hence I get a linking error during build.
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'
How to resolve this correctly?
Android intentionally doesn't provide SysV IPC. Try to avoid using of shared memory or, if you really want, look for examples of using ashmem.
Well, I found this github project and well it works! https://github.com/pelya/android-shmem
Like a magic, it works perfectly. You can use shared memory in android across independent processes using shmget(), shmat() and shmdt() API's seamlessly. Give it a try.
来源:https://stackoverflow.com/questions/38633713/how-to-use-shared-memory-in-android-native-code