《Unix环境高级编程第三版》apue.3e在Linux上编译中遇到问题的处理

UNIX环境高级编程、UNIX网络编程(卷一)环境搭建 最近学习这两本书,在直接编译书本源程序时,出现头文件“apue.h”(UNIX环境高级编程)及“unp.h”(UNIX网络编程)错误,在这里坐下配置的笔记。 首先需要安装Linux系统。(在VirtualBox虚拟机里安装Centos6.7的Linux系统) APUE: 1、使用浏览器从http://www.apuebook.com/code3e.html下载源码src.3e.tar.gz( 阅读详情

一、问题描述:make,遇到错误:cannot find -lbsd 。

二、原因:缺少缺少libbsd文件。

三、解决方法:

1、Fedora 系列(通过yum来下载更新软件)

#yum install libbsd

#yum install libbsd-devel

安装完成后就可以去apue.3e目录make了。

2、Ubuntu 系列(通过apt-get来下载和更新软件)

sudo apt-get install libbsd-dev

安装完成后就可以去apue.3e目录make了。

我遇到的问题是,在apue.3e目录中make报出一些错误:
错误一:

make[1]: Entering directory '/home/pi/Downloads/apue.3e/filedir'
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  access.c -o access  -L../lib -lapue 
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  cdpwd.c -o cdpwd  -L../lib -lapue 
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  changemod.c -o changemod  -L../lib -lapue 
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  devrdev.c -o devrdev  -L../lib -lapue 
devrdev.c: In function ‘main’:
devrdev.c:19:25: warning: implicit declaration of function ‘major’ [-Wimplicit-function-declaration]
   printf("dev = %d/%d", major(buf.st_dev),  minor(buf.st_dev));
                         ^~~~~
devrdev.c:19:45: warning: implicit declaration of function ‘minor’; did you mean ‘mknod’? [-Wimplicit-function-declaration]
   printf("dev = %d/%d", major(buf.st_dev),  minor(buf.st_dev));
                                             ^~~~~
                                             mknod
/usr/bin/ld: /tmp/ccUJTVJZ.o: in function `main':
devrdev.c:(.text+0x88): undefined reference to `major'
/usr/bin/ld: devrdev.c:(.text+0x9c): undefined reference to `minor'
/usr/bin/ld: devrdev.c:(.text+0xfc): undefined reference to `major'
/usr/bin/ld: devrdev.c:(.text+0x110): undefined reference to `minor'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:18: devrdev] Error 1
make[1]: Leaving directory '/home/pi/Downloads/apue.3e/filedir'
make: *** [Makefile:6: all] Error 1

解决办法:
在devrdev.c文件中,添加

#include <sys/sysmacros.h>

在这里插入图片描述

问题二:

gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  options.c -o options  -L../lib -lapue 
make[1]: Leaving directory '/home/pi/Downloads/apue.3e/standards'
making stdio
make[1]: Entering directory '/home/pi/Downloads/apue.3e/stdio'
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE  buf.c -o buf  -L../lib -lapue 
buf.c: In function ‘is_unbuffered’:
buf.c:99:13: error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_flag’; did you mean ‘_flags’?
  return(fp->_flag & _IONBF);
             ^~~~~
             _flags
buf.c: In function ‘is_linebuffered’:
buf.c:105:13: error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_flag’; did you mean ‘_flags’?
  return(fp->_flag & _IOLBF);
             ^~~~~
             _flags
buf.c: In function ‘is_unbuffered’:
buf.c:100:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
buf.c: In function ‘is_linebuffered’:
buf.c:106:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[1]: *** [Makefile:16: buf] Error 1
make[1]: Leaving directory '/home/pi/Downloads/apue.3e/stdio'
make: *** [Makefile:6: all] Error 1

在这里插入图片描述

解决办法:
将这两处的_flag改成_flags

int
is_unbuffered(FILE *fp)
{
	return(fp->_flags & _IONBF);
}

int
is_linebuffered(FILE *fp)
{
	return(fp->_flags & _IOLBF);
}

至此才成功编译:
在这里插入图片描述
如何安装,可以参考《unix环境高级编程·第三版》源代码编译及使用

参考:
《Unix环境高级编程第3版》apue.3e在Linux上无法安装的问题

《unix环境高级编程·第三版》源代码编译及使用

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法 阅读详情

相关推荐

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法汇总

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法 文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008617/126036.html 相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高级编程》后,准备拿源码练练手时,执行第一个myls就出现一大堆的 错误,这未免时个不小的打击。今天把解

benpaobagzb的博客 1022

unix 环境高级编程第三版 源码无法 make 成功的注意点

解决的方法: 1)make失败后,make clean 2)ubuntu sudo apt-get install libbsd-dev 3)然后重新make,成功了。

womeiyou的专栏 457

apue.3e.zip

UNIX环境高级编程(3rd)源码,从原书官网上下载,已经将apueerror.h与apue.h放在同一个目录中:.\include\。

Linux下配置APUE的编译 报错之后如何处理

APUE即Unix环境高级编程,本书中几乎所有的程序都包含一个apue.h的头文件,那如何配置这个apue.h呢? 官方地址:http://www.apuebook.com/apue3e.html 1、我们可以在src.3e.tar中下载,然后放到你的Linux桌面上(没桌面的,随意放吧) 2、解压下载的文件: tar -zxvf src.3e.tar.gz 3、进...

baodiceng4914的博客 289

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 340

Qt Design Studio 入门指南:从零开始打造炫酷UI(详细+实用+轻松上手)

本文是Qt Design Studio的详细入门指南,旨在帮助UI设计新手从零开始轻松打造炫酷界面。文章系统介绍了软件的核心概念、安装步骤、主界面解析,并通过创建一个完整的登录界面实例,手把手教学如何拖拽组件、设置属性、添加交互状态与动画。同时,分享了创建自定义组件、管理资源以及提升效率的实用技巧与常见问题解决方案,让读者能够快速上手并应用于实际项目开发。

devops8pract的博客 588

《Unix环境高级编程》第三版源代码在CentOS 7、Ubuntu 20.04和Ubuntu 22.04上编译

使用看到操作系统是,使用uname -r看到内核是可以看到gcc版本是4.8.5。下载《Unix环境高级编程》第三版里边提供的源代码。进行解压,进入到解压的源代码目录里边。执行make。。安装。make再次执行。

qq_42108074的博客 1221

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文通过一个RTL8306MB交换芯片驱动开发的实战案例,深入剖析了RMII接口调试中的经典陷阱。文章详细描述了因TX_EN与CRS_DV信号线交叉连接错误导致的“静默”故障,并分享了使用逻辑分析仪和示波器进行硬件排查的完整流程与核心技巧,为嵌入式网络驱动开发提供了宝贵的避坑指南。

weixin_29267307的博客 421

apue.h报错问题

下载apue.3e后进入make,提示错误如下: collect2: error: ld returned 1 exit status Makefile:31: recipe for target 'badexit2' failed make[1]: *** [badexit2] Error 1 make[1]: Leaving directory '/home/pi/Download...

weixin_30802171的博客 229

使用podman 容器化安装DIFY

本文阐述了使用podman容器化安装DIFY的过程

wengad的博客 1901

SpringBoot 中 @RequestMapping 及衍生注解的全面解析与实践

本文全面解析Spring Boot中@RequestMapping及其衍生注解的使用,涵盖核心功能、HTTP方法特定注解(@GetMapping/@PostMapping等)、属性详解(路径/参数/头信息等)以及路径变量处理。文章详细介绍了注解的组合使用、继承特性、版本控制策略等高级应用,并针对405/404等常见错误提供解决方案。通过学习这些注解的规范用法,开发者能够构建符合RESTful风格的API接口,提升代码可读性和可维护性。建议优先使用HTTP方法特定注解,合理规划URL结构,并注意避免路径冲突。

Java&AI小吕布的博客 2037

APUE.3e书中源代码编译错误的解决

本人编程环境ubuntu14.04  CodeBlocks13.12   书中源代码下载:Advanced Programming in the UNIX® Environment, Third Edition,点击Source Code下载。   最近开始学UNIX环境下的C编程,UNIX环境高级编程自然是首选的学习书籍,但在将书中实例敲至电脑中却发现编译错误,错误原因是err_quit函数

doubleXnine的专栏 1496

基于STM32设计的智能水母投喂器(华为云IOT)_170

本项目利用STM32单片机控制各种传感器和水泵等设备,能够自动检测和调整水温和水质等参数,自动换水,自动供氧等等,充分满足了水母的养殖要求和需要。同时,根据水母喜欢的光环境,添加了RGB氛围灯,以及可以手动控制的喂食器等功能,提升了水母养殖的便利性和趣味性。

8806

linux安装apue库 (UNIX环境高级编程)

在学unix高级变成环境。之前在虚拟机上已经编译过一次了。这次就记录下编译中的问题吧。 因为apue项目过老了,出点问题也正常。 undefined reference to `minor’ 首先是这个,先上错误代码 devrdev.c: 在函数‘main’中: devrdev.c:19:25: 警告:隐式声明函数‘major’ [-Wimplicit-function-declaration] 19 | printf("dev = %d/%d", major(buf.st_dev), mino

ninesnow_c的博客 1732

20、微电网系统的系统框架、建模与控制架构解析

本文详细解析了微电网系统的系统框架、建模方法以及控制架构。文章首先介绍了在系统的系统(SoS)框架下,微电网如何通过微控制器(MC)和微电网中央控制器(MGCC)协调运行,并支持并网与孤岛模式下的高效能量管理。随后,针对微电网的关键组件,包括微涡轮机、光伏太阳能电池和风力涡轮机,提供了详细的数学建模分析。最后,探讨了微电网的控制架构设计,涵盖分层控制和共识控制策略,以实现系统的高效、稳定运行,满足日益增长的能源需求与市场要求。

elastic6hunter的博客 206

CVE-2021-3156本地提权漏洞复现

受影响版本 sudo: 1.8.2 - 1.8.31p2 sudo: 1.9.0 - 1.9.5p1 测试 我这里是在本地centos7上进行测试。 需要目标机器上存在python编译器、目标主机出网或者能上传文件到目标主机。 以非root用户登录系统,并运行如下命令: sudoedit -s / 通常响应一个以 sudoedit: / 开头的报错,多半存在漏洞。 利用 提权脚本: https://www.o2oxy.cn/wp-content/uploa

The current road is different, love needs to distinguish between right and wrong 3776

《UNIX环境高级编程》apue源代码Ubuntu下的编译

在编译书中例程时,常会报错,主要问题是以下两句代码 #include"apue.h" 这两个头文件并非Ubuntu系统自带的,是《UNIX环境高级编程》作者自己编写的用于定义及报错的头文件 解决方法: 1--下载APUE的代码(http://www.apuebook.com/src.tar.gz)并解压,笔者的目标地址为/home/jimmy/p2p/apue.2e

TITANIC上的小景 3557

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Unix环境高级编程——解决第一个问题“apue.h: No such file or directory”

第一次接触到《Unix环境高级编程》(第三版)是在大三,看得云里雾里,很快便从入门到放弃。大四上完嵌入式的课程,自己在b站看了一些视频,再看看这本书,才发现这本书的强大。很多视频以及教程都是基于这本书去介绍Linux的(Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。如果想了解U...

qq_41899773的博客 2527

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

unix环境高级编程 APUE.H最简单编译方法(第二版) Linux和Ubuntu

/******************************************************************************* *第0种-最简单实用 * *******************************************************************************/. 1.直接进入源码目录的lib目录  

mitesi的专栏 2604

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《unix环境高级编程》源代码编译找不到apue.h等错误的解决办法

转自:http://blog.chinaunix.net/u1/52350/showart_426726.html 最近学习Linux编程,收获真的很多。以前看都是别人或man告诉你某个命令怎么使用,但现在我才领悟到,是程序的源代码决定了全部。   linux要编程,首先需要安装gcc与其它编程工具与库文件。最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。     1.

liuzhi1218的专栏 2828

UNIX环境高级编程Apue.h文件的配置

初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例(download: http://www.apuebook.com/)时就出现问题,提示 "错误:apue.h:没有那个文件或目录".apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就

Wayne's Road to Rome! 2505

UNIX环境高级编程学习环境搭建---apue.h

本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题。幸好网上有各种大神的解决办法让我最终解决了问题。在这里感谢为LINUX开源操作系统奋斗的大神。 不过话说回来,网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说,有些过时,因为很对针对linux的make文件已经改变了很多。 话不多说,下面就来看看具体的搭建过程:(本人用的操作系统是ubuntu 14.04LTS)

guizaijianchic的博客 1238

环境高级编程源码配置——apue.3e 安装

参考网址https://blog.csdn.net/wzl_lzw/article/details/83346282 网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说有些过时,因为很对针对linux的make文件已经改变了很多。 话不多说,下面就来看看具体的搭建过程: 1.在网上下载书中源代码,点击打开链接——www.apuebook.com ...

qq_34031123的博客 349

《unix环境高级编程3》源码编译问题

最近在学习《unix环境高级编程3》这本书,在编译书中源码时候,遇到了一些问题,原因在于书中的源码用到了作者自己编写的头文件和库。本人使用的Linux机器操作系统版本为:Linux version 2.6.32-504.30.3.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat

技术创造人生 511

APUE学习--第三版apue编译

第三版apue编译: 1. 首先在 http://www.apuebook.com/ 下载源码解压: tar zxvf src.3e.tar.gz 看完Readme可知,直接执行make即可 2. 执行make报错: making threads make[1]: 正在进入目录 `/work/apue/apue...

anjiongbian5294的博客 231
上一篇: CMake 入门学习1 Hello World(转)
下一篇: CMake之message()函数的使用和打印变量值
hp_cpp
博客等级 码龄11年 310粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值