Arch LINux 上未定义 O_DIRECT
Posted
技术标签:
【中文标题】Arch LINux 上未定义 O_DIRECT【英文标题】:O_DIRECT not defined on Arch LInux 【发布时间】:2020-11-23 10:22:33 【问题描述】:我正在尝试编写一些低延迟磁盘访问代码。问题是我正在使用的库具有以下代码:
#ifdef O_DIRECT
int flags = O_DIRECT;
#else
int flags = 0;
#endif
我的安装没有定义O_DIRECT
。
我已经通过这个简单的程序确认了这一点:
#include <stdio.h>
int main(void)
#ifdef O_DIRECT
printf("O_DIRECT");
#else
printf("Otherwise");
#endif
打印Otherwise
。
所以问题是为什么没有定义?另外如何解决这个问题?
【问题讨论】:
【参考方案1】:宏其实是defined in<fcntl.h>
,不是stdio.h。
其次,要访问定义,您需要#define _GNU_SOURCE
,因为它是Linux-specific。请注意,定义必须在 any libc 标头包含之前,而不仅仅是在 fcntl.h 之前。
【讨论】:
以上是关于Arch LINux 上未定义 O_DIRECT的主要内容,如果未能解决你的问题,请参考以下文章
在 Arch Linux 上构建微软 CNTK 时出错:libCntk.Eval-2.0.so 抱怨未定义对 TensorView 的引用
Stackdriver 上未显示自定义 OpenCensus 指标