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 为不同架构的计算机系统提供了不同程度的支持。

Halcon异常检测训练避坑指南:如何避免GPU内存溢出和样本不足问题

本文针对Halcon深度学习异常检测训练中常见的GPU内存溢出和样本不足两大难题,提供了从原理分析到实战解决方案的深度指南。通过调整批次大小、图像尺寸、使用梯度累积等技巧有效管理显存,并利用针对性数据增强与人工合成策略破解小样本困境,帮助开发者构建稳定高效的训练流程。

river的博客 215

Freebsd 编译内核

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

striker的专栏 799

工业相机与ABB机器人Socket通信实战:手把手教你用RobotStudio 6.08搭建视觉引导工作站

本文详细介绍了工业相机与ABB机器人通过Socket通信实现视觉引导工作站的实战教程。使用RobotStudio 6.08平台,涵盖工作站搭建、坐标系标定、RAPID代码开发及TCP/IP通信配置,特别解析了欧拉角与四元数转换等关键技术难点,助力智能制造产线升级。

weixin_42531516的博客 407

APUE源代码编译

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

darkness5566的专栏 536

无人车路径规划方法汇总

无人车路径规划方法汇总

weixin_44380244的博客 2558

BQ40Z50R2循环学习实战:量产文件生成与关键状态位解析

本文详细解析了TI BQ40Z50R2电量计循环学习(Golden Learning)的实战流程与量产文件生成方法。重点剖析了updateStatus状态位在充放电静置阶段的常见异常(如卡在0x04或跳至0x0E)及其根本原因,并提供了从环境控制、命令顺序到文件处理的完整避坑指南,帮助工程师高效完成量产配置。

weixin_29170327的博客 214

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

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

bg2bkk的专栏 2999

手把手教你学simulink实例--基于Simulink的轨道交通车辆悬挂系统仿真

轨道交通车辆悬挂系统是保证列车运行平稳性、舒适性和安全性的重要组成部分。通过悬挂系统的合理设计,可以有效减小车辆在运行过程中受到的轨道不平顺和振动影响。基于MATLAB/Simulink平台进行悬挂系统仿真,可以对悬挂系统的动力学行为、控制策略以及性能优化等环节进行建模与分析,从而验证系统的设计性能并优化参数。本项目旨在构建一个完整的轨道交通车辆悬挂系统仿真模型,包括悬挂系统动力学建模、控制策略模块以及性能评估模块,并通过仿真验证系统的稳定性和舒适性。

MHD0815的博客 1032

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

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

mitesi的专栏 2604

SAP-ABAP:SAP数据库视图(Database View)详解-创建

数据库视图是SAP中实现多表关联查询的基础工具,适合简单的跨表查询和权限控制场景。但其功能有限,对于复杂逻辑或高性能需求,建议结合CDS视图或ABAP程序开发。通过合理设计,数据库视图可显著提升开发效率和系统可维护性。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结果。是一种基于物理数据库表的虚拟表,通过关联多个表(使用。

baidu_35680696的博客 1369

锂电池SOH估计 | 基于LSTM模型的锂电池SOH估计(Python)

锂电池SOH估计 | 基于LSTM模型的锂电池SOH估计(Python)

前程算法屋的博客 1433

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

【Android Performance】Android CPU调度模式详解:从performance到schedutil的Governor调优指南

本文系统讲解Android/Linux系统中的CPU频率调节策略(Governor),涵盖六大调度模式的底层工作原理:performance(性能优先)、powersave(省电优先)、conservative(保守调频)、ondemand(按需调频)、userspace(手动控制)以及schedutil(调度器驱动)。文中深入拆解每种Governor的调频决策逻辑、上升/下降曲线的差异、适用场景与选型建议,并配以实操命令演示如何查看可用Governor列表、动态切换调度模式以及多Cluster架构下的统一

weixin_44081096的博客 432

apue源码运行配置

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

程序緣的专栏 704

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

weixin_33805557的博客 164

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

yanlaiming的专栏 612

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

<<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、付费专栏及课程。

余额充值