Linux安装apue.3e(基于ubuntu16.0.4)

本菜刚刚学习UNIX高级编程,无奈搭建本书编程环境时遇到不少问题,参考了网上各路大神的解决办法,最终解决了问题。

(1)下载源代码,可以去官网下载:http://apuebook.com/code3e.html

(2)解压缩源代码文件:tar -zxvf src.3e.tar.gz

(3) 安装静态链接库:sudo apt-get install libbsd-dev

(4) make

(5).在编译成功的基础上,我们进行安装apue.h文件及其对应的静态链接库libapue.a

sudo cp ./include/apue.h /usr/include/
     sudo
cp ./lib/libapue.a /usr/local/lib/
为什么要将libapue.a移到/usr/local/lib中呢?原因是libapue.a是apue.h头文件中包含的所有函数及宏定义的具体实现,是一个静态链接库。

(6)创建apueerror.h文件

/**************
 *
 *apueerror.h
 *
 *************/
#include <apue.h>
#include <stdio.h>
#include <errno.h> /* for definition of errno */

#include <stdarg.h> /* ISO C variable aruments */

static void err_doit(int, int, const char *, va_list);
/*
 * Nonfatal error related to a system call.
 * Print a message and return.
 */
void err_ret(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, errno, fmt, ap);
    va_end(ap);
}

/*
 * Fatal error related to a system call.
 * Print a message and terminate.
 */
void err_sys(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, errno, fmt, ap);
    va_end(ap);
    exit(1);
}

/*
 * Fatal error unrelated to a system call.
 * Error code passed as explict parameter.
 * Print a message and terminate.
 */
void err_exit(int error, const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, error, fmt, ap);
    va_end(ap);
    exit(1);
}

/*
 * Fatal error related to a system call.
 * Print a message, dump core, and terminate.
 */
void err_dump(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, errno, fmt, ap);
    va_end(ap);
    abort(); /* dump core and terminate */
    exit(1); /* shouldn‘t get here */
}

/*
 * Nonfatal error unrelated to a system call.
 * Print a message and return.
 */
void err_msg(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(0, 0, fmt, ap);
    va_end(ap);
}

/*
 * Fatal error unrelated to a system call.
 * Print a message and terminate.
 */
void err_quit(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(0, 0, fmt, ap);
    va_end(ap);
    exit(1);
}

/*
 * Print a message and return to caller.
 * Caller specifies "errnoflag".
 */
static void err_doit(int errnoflag, int error, const char *fmt, va_list ap)
{
    char buf[MAXLINE];
   vsnprintf(buf, MAXLINE, fmt, ap);
   if (errnoflag)
       snprintf(buf+strlen(buf), MAXLINE-strlen(buf), ": %s",
         strerror(error));
   strcat(buf, "\n");
   fflush(stdout); /* in case stdout and stderr are the same */
   fputs(buf, stderr);
   fflush(NULL); /* flushes all stdio output streams */
}

(7)sudo cp apueerror.h  /usr/include/

(8)在要编译运行的代码中#include<apue.h>的下一行增加一行:#include <apueerror.h>

(9)编译就完事了

原文地址:https://www.cnblogs.com/lesroad/p/9738020.html

时间: 2024-11-05 09:46:56

Linux安装apue.3e(基于ubuntu16.0.4)的相关文章

centos7安装apue.3e时出错处理

错误代码如下: /tmp/ccb9gvom.o: In function `thr_fn': barrier.c:(.text+0x6e): undefined reference to `heapsort' collect2: ld 返回 1 make[1]: *** [barrier] 错误 1 需要libbsd这个支持 wget http://elrepo.reloumirrors.net/testing/el6/x86_64/RPMS/libbsd-0.4.2-1.el6.elrepo.

通过tarball形式安装HBASE Cluster(CDH5.0.2)系列随笔

本系列文章只是记录了笔者本人在学习实验安装和使用基于CDH5.0.2的HBASE集群过程中的一些经验教训和心得,绝不是详细的安装过程,因本人不过一初学者,很多方面不甚了了,如果能让不幸读到的人有所得则不胜欣喜,否则大家一笑置之即可. 通过tarball形式安装HBASE Cluster(CDH5.0.2)——集群安装总览 通过tarball形式安装HBASE Cluster(CDH5.0.2)——如何配置分布式集群中的zookeeper 通过tarball形式安装HBASE Cluster(CD

apue.3e 的安装 (基于ubuntu12.0.4)

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

Ubuntu16.0.4.1安装lnmp

环境: 系统:Ubuntu16.0.4.1 内核:Linux os 4.7.10-040710-generic #201610220847 SMP Sat Oct 22 12:50:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux (想升级内核可以看前篇文章) apt方式安装 首先安装:nginx apt install nginx 启动sudo /etc/init.d/nginx start 网页输入127.0.0.1测试 安装数据库 sudo apt-ge

Check Point V-P-N Client安装使用手册(Ubuntu16.0.4)

一.说明1.环境介绍本手册演示的v-p-n客户端安装过程使用以下环境:Linux系统版本:Ubuntu16.0.4V-P-N客户端版本:Check Point's Linux SNX build 800010003 2.系统环境要求a) 安装所有要求的libraries,参考sk65210.b) 安装最新的版本Java 3.参考SKsk65210:SSL Network Extendersk114267:How to install SSL Network Extender (SNX) clie

Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)

文章目录1 根据oracle官方发布的漏洞报告下载补丁2 补丁包上传解压到Linux Server3 补丁包上传解压到Windows Server4 关于OPatch5 Linux与Windows安装补丁区别6 Linux安装补丁6.1 Linux单个补丁安装6.2 查看已安装的补丁6.3 多个补丁安装6.4 单个补丁回滚6.5 多个补丁回滚6.6 验证补丁是否应用到Oracle Home7 重启weblogic应用服务8 Windows安装补丁 文章正文由oracle官方发布的漏洞公告,对we

jira 6.0.7 linux安装

1. 相关下载 1.JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Mysql驱动下载:http://dev.mysql.com/downloads/connector/j 3.Mysql下载:http://dev.mysql.com/downloads/mysql/#downloads 4.Jira下载:http://www.atlassian.com/software/jira/JIRADo

ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RAC 版权声明:本文为博主原创文章,未经博主允许不得转载. VBOX + Oracle Linux 6U3 + ORACLE 11.2.0.3.0 RAC 安装 环境: 虚拟机          VIRTUAL BOX OS                ORACLE LINUX 6.3_X86_64

Linux/RedHat 编译安装GNU gcc 4.9.0 (g++)

这里说的是编译安装,yum/apt-get 等安装方法比较简单,不阐述! 1.下载源码包:gcc.gnu.org 2.解压: tar -xjvf gcc-4.9.0.tar.bz2 3.下载编译所需的依赖包: 最简单的方法,直接执行: ./contrib/download_prerequisites 脚本自动下载依赖包 gmp, mpfr,mpc. 也可以手动下载然后移到/gcc-4.9.0目录下面自动一起安装,或者自行先编译安装 4.执行configure命令,产生makefile: mkdi