我需要什么C ++库来编译这个程序

时间:2010-05-10 00:51:50

标签: c++ debugging g++ libraries

当我尝试编译程序时,我遇到了这些错误:

btio.c:19: error: ‘O_RDWR’ was not declared in this scope
btio.c:19: error: ‘open’ was not declared in this scope
btio.c: In function ‘short int create_tree()’:
btio.c:56: error: ‘creat’ was not declared in this scope
btio.c: In function ‘short int create_tree(int, int)’:
btio.c:71: error: ‘creat’ was not declared in this scope

我需要包含哪些库来修复这些错误?

2 个答案:

答案 0 :(得分:35)

你想:

#include <fcntl.h>    /* For O_RDWR */
#include <unistd.h>   /* For open(), creat() */

另外,请注意,正如@R Samuel Klatchko所写,这些是 不是 “库”。 #include所做的是逐字地将文件插入到您的代码中。恰好标准标题fcntl.h将具有如下行:

#define O_RDWR    <some value here>

而且unistd.h会有如下行:

int open(const char *, int, ...);

int creat(const char *, mode_t);

换句话说,函数原型,它通知编译器该函数存在于某处以及它的参数可能是什么样的。

后面的链接步骤将在 libraries 中查找这些函数;这就是术语“库”的用武之地。大多数情况下,这些函数将存在于名为libc.so的库中。您可以考虑编译器代表您插入标记-lclibc的链接)。

此外,这些不是“C ++”而是POSIX。

答案 1 :(得分:6)

你试过<fcntl.h>吗?搜索这些符号的任何组合都会产生......