macOS下apue.h安装后测试报错,排查发现为测试代码问题
在macOS上安装apue.h及编译问题排查
安装流程
- 进入apue.3e目录执行编译命令:
make(也可尝试指定编译器:make CC=/usr/bin/clang),编译无报错。 - 复制库文件并修改权限:
sudo cp ./lib/libapue.a /usr/local/lib sudo chmod 644 /usr/local/lib/libapue.a sudo cp ./include/apue.h /usr/local/include sudo chmod 644 /usr/local/include/apue.h
编译报错排查
- 使用命令
gcc test.c -o test -lapue编译测试文件时,出现错误:error: implicit declaration of function 'open' is invalid in C99,最初误以为是apue.h未正确安装。 - 测试文件test.c内容:
#include <apue.h> #include <stdio.h> int main() { int fd = open("test.txt", O_CREAT); printf("Hello, world!\n"); return 0; } - 最终确认:apue.h已正确安装,报错原因是测试代码本身存在问题——
open函数需要包含<fcntl.h>头文件才能显式声明,O_CREAT宏也定义在该头文件中;同时open函数调用缺少第三个必填参数(文件权限),不符合函数原型要求。
内容的提问来源于stack exchange,提问作者user13059000
相关产品推荐
相关产品推荐

