zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    (转)spring学习之@ModelAttribute运用详解
    (转)Spring3MVC 在JSP中使用@ModelAttribute
    (转)如何在maven的pom.xml中添加本地jar包
    (转)linux中项目部署和日志查看
    (转)Schema
    (转)xml
    (转)Dom4J解析
    判断一个请求是否为Ajax请求
    spring mvc中拦截器配置mvc:interceptors
    Freemarker自定义方法
  • 原文地址:https://www.cnblogs.com/any91/p/3406296.html
Copyright © 2011-2022 走看看