apue.2e 源码在 Freebsd 9.0 下编译

apue.2e(apue源代码) UNIX高级环境编程中的实例代码,学习的好例子 立即下载
freeBSD是安装在虚拟机下面的,方便学习。

一、自动编译源码
1、下载(确保联网,虚拟机网卡配置为桥接模式),命令为

fetch http://www.apuebook.com/src.tar.gz

2、解压(当前目录),命令为

tar -xf src.tar.gz
3、查看apue.2e/README可知,需要修改 Make.defines.freebsd 配置文件。部分命令为

cd apue.2e

edit Make.defines.freebsd

#修改这一行
WKDIR=/usr/home/当前用户名/apue.2e

#ESC退出,按提示保存。
4、运行make,命令为
make
然后就可以看到编译后的文件了。
二、手工编译对应的源码,由于.c文件不是按章节分目录存放,找起来不方便。因此需要手工编译fig*这些对应的文件。中文版每一章的程序清单号可能会有差异,如第一单第一个程序清单对应于fig1.3文件。为了方便,我将每一章都单独存放在一起,同时将程序文件拷贝一份为.c文件。例如
#新建第一章目录
mkdir ch01
#拷贝所有程序到第一章目录
cp fig1* ch01
#转到第一章目录
cd ch01
#拷贝一个.c文件
cp fig1.3 fig1.3.c
在编译时报错了,是由于自定义的头文件。第8章里面用的TELL_WAIT函数定义在 lib/tellwait.c,缺其它函数文件时均可先在lib目录下查找,同样拷贝到/usr/include/,然后包含在源文件中即可。
#apue头文件
cp ../include/apue.h /usr/include
#apue错误头文件
cp ../figB.3 /usr/include/apueerr.h
当碰到编译时提示 undefined reference to 'err_sys'
加入apueerr.h头文件即可。如fig1.3.c
#include "apue.h"
#include <dirent.h>
#include "apueerr.h"

int
main(int argc, char *argv[])
{
    DIR                *dp;
    struct dirent    *dirp;

    if (argc != 2)
        err_quit("usage: ls directory_name");

    if ((dp = opendir(argv[1])) == NULL)
        err_sys("can't open %s", argv[1]);
    while ((dirp = readdir(dp)) != NULL)
        printf("%s\n", dirp->d_name);

    closedir(dp);
    exit(0);
}
然后编译即可。
gcc fig1.3.c

./a.out /dev

参考资料:

[1]Linux下APUE2源码编译出错的处理方法.http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=2024984&fromuid=242653
[2]freebsd复制目录下的文件到另一目录下.http://rickie622.blog.163.com/blog/static/212388112010101711235709/
apue.2e.zip apue代码包 立即下载

相关推荐

apue.2e源代码

希望对大家学习apue源码编译方法以及单个源码编译的实现有所帮助,

FreeBSD12.1内核编译步骤

自己定制内核的好处: 1)加速开机,因为自己定制的内核只需要侦测定制系统上的硬件。 2)减少内存使用,因为内核必须一直存放在内存里。 3)增加额外硬件支持,自己定制内核可以加入一些核心没有提供的硬件支持模块。 内核编译步骤: 步骤1.下载内核源码 1)删除旧的内核源码 rm -rf /usr/src/ 2)下载同版本的内核源码 axel -n 10 -a https://mirrors.aliyun.com/freebsd/releases/amd64/12.1-RELEASE/src.t.

丰的运维笔记 2443

FreeBSD 9.0

FreeBSD

FreeBSD内核编译

备份 GENERIC 到 GENERIC.old 文件,GENERIC.old 是默认内核配置文件,GENERIC 将作为新的内核文件配置文件。 cd /usr/src/sys/amd64/conf cp GENERIC GENERIC.old 用 vi 或者 ee 编辑 GENERIC,在末尾添加以下 IPF 防火墙配置 options IPFILTER options IP...

icquu的博客 1201

FreeBSD-9.0内核源码

FreeBSD是一种UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不同程度的支持。

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 488

Freebsd 编译内核

# cd /usr/src/sys/i386/conf# cp GENERIC GENERIC.20060812# ee GENERIC如果要加入ipf防火墙的话则加入options         IPFIREWALLoptions         IPFIREWALL_DEFAULT_TO_ACCEPToptions         IPFIREWALL_FORWARDoptions    

striker的专栏 799

DeepSeek高阶应用:DeepSeek+Coze构建智能文献综述与趋势分析自动化系统

本文详细介绍了如何利用DeepSeek与Coze构建智能文献综述与趋势分析自动化系统。通过DeepSeek的深度语义理解和结构化信息提取能力,结合Coze的可视化工作流编排,实现学术论文的自动解析、分类整理与知识入库。该系统能7x24小时自动追踪领域前沿,将研究人员从繁琐的文献处理中解放出来,专注于更高层次的思考与创新。

weixin_29050271的博客 179

APUE源代码编译

一最近学习Linux编程,收获真的很多。以前都是别人或man告诉你某个命令怎么使用,但现在我才领悟到,是程序的源代码决定了全部。linux编程,首先需要安装gcc与其它编程工具与库文件。最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。 1.APUE2源代码下载:http://www.apuebook.com/src.tar.gz2.我保存到了/root下.解压缩:tar -xzvf

darkness5566的专栏 536

无人机信号干扰系统设计方案

设计定向阻塞干扰器需要结合射频(RF)技术、功率放大技术和定向天线技术,核心目标是向特定方向发射高功率噪声信号,覆盖目标频段,阻断无人机的通信或导航信号。实际设计中需平衡功率、效率、散热和便携性,同时需考虑抗干扰技术的快速演进(如无人机加密通信和AI避障)。在合法框架下,此类设备可有效应对“黑飞”威胁,但技术滥用风险需严格管控。定向阻塞干扰器的硬件设计核心在于。

wanghao312的博客 3060

别再只会插卡了!用示波器实测SIM卡上电时序与通信波形(附故障排查)

本文深入解析了SIM卡通信的电气信号与时序规则,通过示波器实测波形揭示SIM卡上电时序与通信协议的关键细节。从VCC、CLK、RST、DATA四路信号的协同工作,到ATR(Answer to Reset)的解析,再到常见故障的波形诊断与排查方法,为硬件工程师提供了实用的调试指南。文章还分享了高级调试技巧与现代化工具链搭建建议,帮助提升物联网设备SIM卡通信的可靠性与效率。

weixin_42567279的博客 325

《Unix环境高级编程》(APUE)附带源码编译过程

在UBUNTU下进行APUE的代码编译的话,需要改动的地方很多,尤其是ubuntu12.04下,内核升级到3.0后。 一 首先进行一些改动,将工作区间改变,修改MAKE文件以为编译打基础 http://blog.csdn.net/dycwahaha/article/details/2300938 (一)作者提供的编译方法的实现      README文件中给出的编译方法如下:     T

bg2bkk的专栏 2999

LeRobot 入门教程(三)在仿真环境和自定义机器人上部署 LeRobot

本教程详细介绍了基于真实世界机器人和仿真环境的模仿学习实现方法,涵盖数据采集、训练策略和评估全流程。在真实机器人部分,重点讲解了远程操作设置、摄像头配置、数据集记录与管理技巧、策略训练(支持GPU/MPS设备)以及模型评估。仿真环境部分则演示了gym-hil的安装使用、模拟数据采集和策略训练。此外,教程还提供了自定义机器人集成指南,包括电机选择、接口继承、传感器/动作特征定义、连接管理和校准配置等核心步骤。所有方法均支持HuggingFace数据集中心和Weights & Biases工具链,为机器

2506_90492529的博客 2400

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

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

mitesi的专栏 2604

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1371

AI产品经理面试宝典第94天:RAG知识库构建与预处理策略面试指南

本文深入解析RAG知识库构建的核心挑战与预处理策略,涵盖文档格式转换、问答对生成及自动化测试全流程,为AI产品经理提供面试必备的实战方法论与避坑指南,助你精准应对技术深度类问题。

打造全国最全的AI Agent开发知识领域的博客 312

apue.2e安装详解

linux下APUE源码编译错误解决 (2013-03-01 15:14:20) 转载▼   分类: Linux 文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008617/126036.html 相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高级编程》后,准

barry_yan 2017

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

apue源码运行配置

在终端里面输入 vi ls1.c在里面编辑如下代码: #include "apue.h" #include int main(int argc, char *argv[]) { DIR *dp; struct dirent *dirp;

程序緣的专栏 704

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008617/126036.html 相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高级编程》后,准备拿源码练练手时,执行第一个myls就出现一大堆的错 误,这未免时个不小的打击。今天把解决方法写下来,第一自己有个记录,第二也帮助那些被同...

weixin_33805557的博客 164

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

unix环境高级编程编译方法 -apue最简单编译方法(第二版)

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

yanlaiming的专栏 612

<<APUE>> 编译方法

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

weixin_34216107的博客 110

APUE 3.0 源码例程编译问题解决 sys_error sys_quit cannot find -lbsd

编译例程文件出现下面错误          提示找不到apue.h err_quit err_quit函数,对于apue.h可在编译时指定路径:-Iinclude,或者直接将文件拷贝至当前的源代码目录下, 对于err_quit err_quit有两种方法:      1、直接将error.c文件放在源代码目录下,在自己的代码中包含进来,直接进行编译。(比较麻烦,我们采用下面的一种)...

weixin_30836759的博客 117

UNIX 高级编程 学习

相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高级编程》后,准备拿源码练练手时,执行第一个myls就出现一大堆的 错误,这未免时个不小的打击。今天把解决方法写下来,第一自己有个记录,第二也帮助那些被同样问题困扰的朋友尽快的进入linux美丽的世界。(只限 linux系统) 首先需要make一次源代码 编辑源码解压生成的apue.2e文件夹下的Make.defines.li

cuiyifang的专栏 969

UNIX 高级环境编程 源码编译——方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34319374的博客 161
上一篇: hibernate 3.2.7 支持SQL SERVER 2005+的分页
下一篇: extjs 2 + dwr 2 脚本加载速度优化
rootcn
博客等级 码龄23年 27粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值