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"
我正在使用 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"