F_SETPIPE_SZ undelcard 与 android NDK

F_SETPIPE_SZ undelcard with android NDK

我正在使用 NDK 为 android 构建一个 jni 库,我需要更改管道缓冲区大小,但是 fcntl(pipe_fd[0], F_SETPIPE_SZ, 1048576); 编译失败,错误消息"F_SETPIPE_SZ undelcard",我已经在C++源文件的开头添加了#define _GNU_SOURCE。可能是什么原因?

我猜你的问题是你从未为 _GNU_SOURCE 结束你的 #ifndef,因为你声明你已经在开头包含它。以下是需要访问该宏的文件的示例:

#ifndef _GNU_SOURCE
#define _GNU_SOURCE

#include <fcntl.h>

extern "C"
{

int test()
{
    int some_fd = 123456;
    int size_in_bytes = 12345;
    return fcntl(some_fd, F_SETPIPE_SZ, 12345);
}

} // End extern

#endif

检查了以下版本

Android Studio: 1.3.2
NDK: r10e

各种gradle设置:

compileSdkVersion 22
buildToolsVersion "23.0.0 rc3"