Я пытаюсь написать код JNA, который обращается к glibc, в частности, функции, определенные в mmap.h
.
Я попытался определить его точно так, как показано в man shm_open
. Вызов функции getuid()
непосредственно перед началом работы, но shm_open
не возвращается.
Я вынужден использовать JNA 4.4.0 и JNA Platform 3.4.0.
interface LibC extends Library {
LibC INSTANCE = Native.loadLibrary("c", LibC.class);
int shm_open(String name, int oFlag, int mode);
}
// ...
int fileDescriptor = LibC.INSTANCE.shm_open("/some_memory.123", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
// ...
Я ожидаю, что будет возвращен дескриптор файла, но я получаю следующие исключения:
- Когда я загружаю "libc.so.6":
java.lang.UnsatisfiedLinkError: Error looking up function 'shm_open': /lib/x86_64-linux-gnu/libc.so.6: undefined symbol: shm_open
- Когда я загружаю "c":
java.lang.UnsatisfiedLinkError: Error looking up function 'shm_open': /usr/lib/jvm/java-8-openjdk-amd64/bin/java: undefined symbol: shm_open