• UNIX环境高级编程 使用方法


    1、解压文件到apue.2e目录
    2、修改相应平台的文件,我使用的是linux,所以修改Make.defines.linux
    你修改的只需要这一行WKDIR=/home/your_dir/apue2e_src/apue.2e,改成自己的目录路径
    3、记得首先安装开发工具,最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。 cd到apue.2e目录执行make,之后你会在lib目录下面找到libapue.a 这个文件.
    现在,你可以把它拷贝到你能寻找的地方,在编写例子的时候,你就可以

    4、拷贝apue2e_src/apue.2e/include/apue.h和apue2e_src/apue.2e/lib/libapue.a

    到你的源 代码目录。

    5、使用gcc -o hello hello.c libapue.a来编译 你的源 代码





    1 获得源码
    从apue的官方网站http://www.apuebook.com/下载源码。(http://www.apuebook.com/src.tar.gz)
    2 WKDIR
    编辑源码解压生成的apue.2e文件夹下的Make.defines.linux
    修改WKDIR=/home/sar/apue.2e为你的apue.2e目录,
    比如我的apue源码解压在主目录下,那我就改为:
    WKDIR=/home/chen/apue.2e
    3 nawk
    然后进入apue.2e/std 目录,编辑linux.mk。修改里面所有的nawk为awk。
    4 stropts.h
    如果出现stropts.h找不到的情况,则下载glibc-2.11 (地址 http://ftp.gnu.org/gnu/glibc/),解压缩
    #cp ./glibc-2.11/streams/stropts.h /usr/include
    #cp ./glibc-2.11/bits/stropts.h /usr/include/bits
    #cp ./glibc-2.11/sysdeps/x86_64/bits/xtitypes.h /usr/include/bits

    make clean 一下
    继续make

    5 ARG_MAX
    在我的机器上编译时,提示ARG_MAX未定义,可以这么修改。
    在apue.2e/include/apue.h中添加一行:
    #define ARG_MAX 4096
    打开apue.2e/threadctl/getenv1.c 和apue.2e/threadctl/getenv3.c,添加一行:
    #include "apue.h"

    若要自己编译单个文件,则将 apue.h 和上述编译成功后生成的 libapue.a 静态库文件考到系统目录去
    #cp ~/apue.2e/include/apue.h /usr/include
    #cp ~/apue.2e/lib/libapue.a /usr/lib
    举例编译第一个文件 ls1.c

        #include "apue.h"
        #include <dirent.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 ", dirp->d_name);

            closedir(dp);
            exit(0);
        }

    链接apue的静态库即可:
    $gcc -Wall ls1.c -lapue -o ls1

    如果不拷贝 apue.h 和 libapue.a,则需要在编译命令中分别以 -I 和 -L 参数指定两个文件的位置(绝对相对均可),如:
    $gcc -Wall ls1.c -I~/apue.2e/include -L~/apue.2e/lib -lapue -o ls1

    另:libapue.a 这个静态库也可以自己编译生成。
    $ar rs libapue.a ~/apue.2e/lib/*.o
    或者:
    $ar r libapue.a ~/apue.2e/lib/*.o
    $ranlib libapue.a

  • 相关阅读:
    字符串匹配算法 【微软面试100题 第三十三题】
    交换元素,使两数组之和的差最小 【微软面试100题 第三十二题】
    在从1到n的正数中1出现的次数 【微软面试100题 第三十题】
    栈的push、pop序列 【微软面试100题 第二十九题】
    整数的二进制表示中1的个数 【微软面试100题 第二十八题】
    跳台阶问题 【微软面试100题 第二十七题】
    左旋转字符串 【微软面试100题 第二十六题】
    字符串中找出最长的数字串 【微软面试100题 第二十五题】
    合并链表 【微软面试100题 第二十四题】
    计算圆形是否和正方形相交 【微软面试100题 第二十三题】
  • 原文地址:https://www.cnblogs.com/any91/p/3406296.html
Copyright © 2020-2023  润新知