• UNIX环境高级编程 apue.h头文件的配置


    http://jimslinbing.blog.163.com/blog/static/85054319201292712414518/

    1.到http://www.apuebook.com下载源码
    2.tar解包,cd apue.2e
    3.vi Make.defines.linux   修改变量WKDIR,指向你的apue源码的位置,我的是/home/huangz/code/apue.2e,所以
      WKDIR=/home/huangz/code/apue.2e
    4.vi include/apue.h  增加一个常量ARG_MAX,这是threadctl/getenv1.c和threadctl/getenv3.c要用到的;4096这个值是参考里给的,如果有问题,自己修改吧。
      #define ARG_MAX 4096
    5.vi threadctl/getenv1.c   增加
      #include "apue.h"
    6.vi threadctl/getenv3.c   增加
      #include "apue.h"
    7.vi threads/badexit2.c   修改第31行,将pthread_self()的返回值转换为int类型。
      printf("thread 2: ID is %d ", (int)pthread_self());
    8.vi std/linux.mk   将两个nawk改为awk,如果是用的vi/vim编辑器,可以使用这个命令:$s/nawk/awk/g
    9.apue.h头文件的#endif前面添加一行 #include "error.c"
    10.make
    11.sudo cp include/apue.h      /usr/include
       sudo cp apue.2e/lib/error.c /usr/include
       sudo cp lib/libapue.a       /usr/lib
       
    好了,测试一下,记得要用-lapue命令让编译器链接libapue.a库
    gcc main.c -lapue
    cc -o threadid threadid.c -lapue -lpthread


    编译过程出现错误:
    In file included from /usr/include/i386-linux-gnu/bits/time.h:86:0,
                     from /usr/include/time.h:42,
                     from /usr/include/pthread.h:26,
                     from printd.c:11:
    /usr/include/i386-linux-gnu/bits/timex.h:31:7: 错误: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘.’ token
    这是linux的time.h中定义林全局变量status,在apue.h/ipp的ipp.h中也定义了,改成Status,
    编译出错的时候将相应位置的status改成Status即可,
    再把apue.h/ipp/printd.c中的hp->status 改成hp->Status即可。

    总结:下载了apue.h以后,将apue.h放到/usr/include/下,在/apue.2e/lib/error.c,
    将error.c复制到/usr/include/下,在apue.h的最后一行 #endif前 加一句#include"error.c ",即可。但是不保证能全部执行书上代码。

  • 相关阅读:
    每日博客
    每日博客
    预开发软件书 新
    laravel的优点
    Laravel 自己创建ServiceProvider 与 yansongda/laravel-pay 支付服务
    laradock
    普通静态绑定与后期静态绑定
    phpstorm和xdebug的配置 变量的单步调试
    phpstorm 连接远程docker
    docker php-fpm安装xdebug 与phpstorm firefox联调
  • 原文地址:https://www.cnblogs.com/liulipeng/p/3442779.html
Copyright © 2020-2023  润新知