zoukankan      html  css  js  c++  java
  • 运行apue下的第一个程序

    PUE中的代码不是download下来就可以直接编译执行的。由于头文件的问题,需要做相关的设置,修改一下相关的文件。

    首先从http://www.apuebook.com/src.tar.gz下载源码压缩包,解压到相应目录,例如:

    mkdir /home/Rockics/src

    cd /home/Rockics/src/

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

    tar zxvf src.tar.gz

    解压以后得到文件夹apue.2e。按照以下步骤完成设置,则可以编译相关代码:

    1.进入相应目录:cd apue.2e;

    2.修改文件Make.defines.linux:将其中的WKDIR 修改为/home/Rockics/src/apue.2e,保存退出;

    3.修改文件std/linux.mk:将其中的nawk全部修改为wak,可在vi下使用命令:%s/nawk/awk/g完成;

    4.make

    5.将include下的apue.h  cp到/usr/include下,如果不嫌麻烦也可以在编译时使用-I参数指定apue.h的路径。

    将lib下的libapue.a  cp到/usr/lib/下,如果不嫌麻烦也可以在编译时使用-L指定。

    6、错误与解决
    gcc -DLINUX -ansi -I/root/apue.2e/include -Wall -D_GNU_SOURCE -c -o getenv1.o getenv1.c
    getenv1.c:4: error: ‘ARG_MAX’ undeclared here (not in a function)
    make[2]: *** [getenv1.o] Error 1
    make[2]: Leaving directory `/root/apue.2e/threadctl’
    make[1]: *** [linux] Error 1
    make[1]: Leaving directory `/root/apue.2e’
    make: *** [all] Error 2
    解决方法:
    在apue.2e/include/apue.h中添加一行:
    #define ARG_MAX 4096
    打开apue.2e/threadctl/getenv3.c(包括getenv1.c),添加一行:
    #include "apue.h"
    7、再次编译即可。
    使用源代码:
    1、知道源代码的软连接与位置
    root@ubuntu:~/apue/apue.2e$ ll fig1.3
    lrwxrwxrwx 1 root root 10 2010-11-27 07:27 fig1.3 -> file/ls1.c
    2、进入file目录
    root@ubuntu:~/apue/apue.2e/file$ ls
    access devrdev.c ftw4.c longpath.c seek.c umask.c
    access.c fileflags hello ls1 solaris.mk unlink
    cdpwd fileflags.c hello.c ls1.c testerror unlink.c
    cdpwd.c filetype hole macos.mk testerror.c zap
    changemod filetype.c hole.c mycd uidgid zap.c
    changemod.c freebsd.mk linux.mk mycd.c uidgid.c
    devrdev ftw4 longpath seek umask

  • 相关阅读:
    matlab播放音乐
    virtualbox安装增强功能时【未能加载虚拟光盘】
    VirtualBox piix4_smbus Error
    VirtualBox虚拟机运行Ubuntu如何不卡
    微信支付注意事项
    ListView实现RadioButton的单选效果
    他山之石____Java 线程池的原理与实现
    线程池的使用____银行业务调度系统
    基础加强____【动态代理 & AOP】【实现类Spring的AOP框架】
    基础加强____【Java类加载器 & "委托机制"】
  • 原文地址:https://www.cnblogs.com/cdwodm/p/2720403.html
Copyright © 2011-2022 走看看