《UNIX编程环境》的源代码的第二个版本Ubuntu下编
1.在http://www.apuebook.com下载源代码
2. 视图READ
root@ubuntu:/home/wl/mywork/apue.2e# cat -n README
1 Read the file called DISCLAIMER.
2
3 Some source changes needed to be made after the book went out for the first
4 printing. I forgot to make corresponding changes in the source tree on the
5 system used to develop the book. The changes are summarized below.
6
7 1. lib/recvfd.c and sockets/recvfd.c - needed sys/uio.h on Mac OS X
8 2. lib/sendfd.c and sockets/sendfd.c - needed sys/uio.h on Mac OS X
9 3. stdio/buf.c - added code for Mac OS X
10 4. threadctl/suspend.c - changed wait to waitloc to avoid symbol definition
11 clash on Solaris
12 5. include/apue.h - FreeBSD compiles work better if we rely on the default
13 system settings. Solaris needed a different XOPEN_SOURCE definition
14 and also a CMSG_LEN definition.
15
16 To build the source, edit the Make.defines.* file for your system and set
17 WKDIR to the pathname of the tree containing the source code. Then just
18 run "make". It should figure out the system type and build the source for
19 that platform automatically. If you are running on a system other than
20 FreeBSD, Linux, Mac OS X, or Solaris, you'll need to modify the makefiles
21 to include the settings for your system. Also, you'll probably need to
22 modify the source code to get it to build on a different operating system.
23 The example source was compiled and tested using FreeBSD 5.2.1, Linux 2.4.22,
24 Mac OS X 10.3, and Solaris 9.
25
26 For FAQs, updated source code, and the lost chapter, see http://www.apuebook.com.
27 Please direct questions, suggestions, and bug reports to sar@apuebook.com.
28
29 Steve Rago
30 May 30, 2005
root@ubuntu:/home/wl/mywork/apue.2e#
从第16行開始看到19行就能够了~~
3. 改动Make.defines.linux
# Common make definitions, customized for each platform # Definitions required in all program directories to compile and link
# C programs using gcc. WKDIR=/home/wl/mywork/apue.2e
#WKDIR=/home/sar/apue.2e
CC=gcc
COMPILE.c=$(CC) $(CFLAGS) $(CPPFLAGS) -c
LINK.c=$(CC) $(CFLAGS) $(CPPFLAGS) $(LDDIR) $(LDFLAGS)
LDDIR=-L../lib
LDLIBS=../lib/libapue.a $(EXTRALIBS)
CFLAGS=-DLINUX -ansi -I$(WKDIR)/include -Wall -D_GNU_SOURCE $(EXTRA)
CPPFLAGS=-I/home/wl/mywork/apue.2e/include
# Our library that almost every program needs.
LIB=../libapue.a # Common temp files to delete from each directory.
TEMPFILES=core core.* *.o temp.* *.out typescript*
~
各位仅仅须要改动上面大字部分改为自己的路径就能够了~~~
4. 将apue.h和error.c两个文件copy到/usr/include下
5. 编辑apue.h
#vi apue.h
在最后一行 #endif /* _APUE_H */
前面加入一行 #include "error.c"。
6. 编译源文件
(以source\file文件夹为例)
#cd file
#cp linux.mk Makefile
#make
root@ubuntu:/home/wl/mywork/apue.2e/file# make
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib access.c ../lib/libapue.a -o access
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib cdpwd.c ../lib/libapue.a -o cdpwd
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib changemod.c ../lib/libapue.a -o changemod
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib devrdev.c ../lib/libapue.a -o devrdev
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib fileflags.c ../lib/libapue.a -o fileflags
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib filetype.c ../lib/libapue.a -o filetype
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib ftw4.c ../lib/libapue.a -o ftw4
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib hello.c ../lib/libapue.a -o hello
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib hole.c ../lib/libapue.a -o hole
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib longpath.c ../lib/libapue.a -o longpath
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib ls1.c ../lib/libapue.a -o ls1
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib mycd.c ../lib/libapue.a -o mycd
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib seek.c ../lib/libapue.a -o seek
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib testerror.c ../lib/libapue.a -o testerror
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib uidgid.c ../lib/libapue.a -o uidgid
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib umask.c ../lib/libapue.a -o umask
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib unlink.c ../lib/libapue.a -o unlink
gcc -DLINUX -ansi -I/home/wl/mywork/apue.2e/include -Wall -D_GNU_SOURCE -I/home/wl/mywork/apue.2e/include -L../lib zap.c ../lib/libapue.a -o zap
root@ubuntu:/home/wl/mywork/apue.2e/file#
编译成功
------------------------------------------------------------enjoy-------------------------------------------------------------------------------------
-----------------------------------------------------------the end-----------------------------------------------------------------------------------
版权声明:本文博客原创文章,博客,未经同意,不得转载。
《UNIX编程环境》的源代码的第二个版本Ubuntu下编的更多相关文章
- Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)
此配置实例亲测成功,共勉,有问题大家留言. 环境:VMware 10 + unbuntu 14.04 为了unix进行网络编程,编程第一个unix程序时遇到的问题,不能包含unp.h文件,这个感觉和a ...
- 记录一次配置unix网络编程环境的过程和遇到的问题
记录一次搭建unix网络编程环境过程中遇到的问题和总结 计算机环境虚拟机 linuxmint-18-xfce-64bit 1.打开unix网络编程.iso 把目录下的文件复制到某一目录,修改权限,可命 ...
- UNIX高级环境编程1
UNIX高级环境编程1 故宫角楼是很多摄影爱好者常去的地方,夕阳余辉下的故宫角楼平静而安详. 首先,了解一下进程的基本概念,进程在内存中布局和内容. 此外,还需要知道运行时是如何为动态数据结构(如链表 ...
- unix网络编程环境搭建
unix网络编程环境搭建 网络编程 环境 1.点击下载源代码 可以通过下列官网中的源代码目录下载最新代码: http://www.unpbook.com/src.html 2.解压文件 tar -xz ...
- Unix高级环境编程
[07] Unix进程环境==================================1. 进程终止 atexit()函数注册终止处理程序. exit()或return语句: ...
- Unix/Linux环境C编程入门教程(32) 环境变量那些事儿
1. getenv() putenv()setenv()函数介绍 getenv(取得环境变量内容) 相关函数 putenv,setenv,unsetenv 表头文件 #include<stdli ...
- UNIX高级环境编程(14)文件IO - O_DIRECT和O_SYNC详解 < 海棠花溪 >
春天来了,除了工作学习,大家也要注意锻炼身体,多出去运动运动. 上周末在元大都遗址公园海棠花溪拍的海棠花. 进入正题. O_DIRECT和O_SYNC是系统调用open的flag参数.通过指定o ...
- UNIX环境编程初步认识——编程环境搭建
前言 前期学习了Linux的一些基本知识后,在借助前期的学习的基础上想再初步认识一下操作系统的一些环境编程体系相关知识,当中环境的配置和搭建费了非常大的劲,须要一点点摸索和尝试,下边是环境搭建的 ...
- 学习linux/unix编程方法的建议(转)
假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux ...
随机推荐
- 进阶:案例五: Dynamic 创建 Business Graphic
效果图: step: 无需节点无需UI 1.添加属性 2.代码: method WDDOMODIFYVIEW . DATA:lr_graph TYPE REF TO cl_wd_business_gr ...
- gcc中__attribute__ ((constructor(101)))做成.a库成功链接
1.cpp:------------------------------------------------ #include int test() __attribute__ ((construct ...
- ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图
本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的Ext GridPanel的前身,不过现在的Ext4已经将它整合到 ...
- UML基本架构建模--类概述
Classes 类 Classes are the most important building block of any object-oriented system. A class is ...
- 在屏幕上建立ALV
在屏幕上创建两个文本元素空件.一个推出按钮控件.一个定制控制按钮 代码所示: *&------------------------------------------------------- ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(三)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(三) 3.Field配置所产生的效果 索引数据,简单的代码,只要两个方法就搞定了,而在索引过程中用到的一些类里最简单,作用也不小的就是F ...
- 【ASP.NET Web API教程】5.1 HTTP消息处理器
原文:[ASP.NET Web API教程]5.1 HTTP消息处理器 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内容. 5.1 HTTP ...
- mybatis 的简单使用
须要用到的包:(这里仅仅是当中一个版本号.其它的百度) mysql-connector-java-5.1.6-bin mybatis-3.2.2 先看项目文件夹: 配置文件mybatisconfig. ...
- gcc和g++的区别【转自中国源码网】
gcc和g++的区别[转自中国源码网] gcc和g++都是GNU(组织)的一个编译器. 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是 ...
- Mysql iot表
我们知道一般的表都以堆(heap)的形式来组织的,这是无序的组织方式. Oracle还提供了一种有序的表,它就是索引组织表,简称IOT表.IOT表上必须要有主键,而IOT表本身不对应segment,表 ...