首页 > 系统服务 > 详细

apue.3e的编译运行+Ubuntu20.04

时间:2021-08-04 15:52:17      阅读:16      评论:0      收藏:0      [点我收藏+]

主要参考资料:

https://www.abaozhan.com/news_txtlist_i31502v.html

1.下载apue.3e源码

下载地址为:http://www.apuebook.com/src.3e.tar.gz

2.解压

可直接在文件夹中右键压缩包选择“提取到此处”

下述步骤均须在解压之后的apue.3e目录下进行

3.编译运行apue.3e

最开始直接执行make命令:

lmy@lmy-LAPTOP:~/linux_unix/apue.3e$ make

但报错如下:

技术分享图片

看了网上资料后,尝试添加libbsd.a的静态链接库:

lmy@lmy-LAPTOP:~/linux_unix/apue.3e$ sudo apt-get install libbsd-dev

再次执行make命令,报错依旧如上

参考了https://www.abaozhan.com/news_txtlist_i31502v.html和另外一篇博客,得到的解决方法为:打开apue.3e/include目录下的apue.h文件,在其中添加#include <sys/sysmacros.h>,如下图所示

技术分享图片

再次执行make命令,虽然上一个错误解决了,但又出现了新的错误

技术分享图片

 依旧参考https://www.abaozhan.com/news_txtlist_i31502v.html,主要做了两件事:

  • 打开apue.3e/stdio/buf.c,删掉如下代码(文件的89~93行)
  • #ifdef _LP64
    #define _flag __pad[4]
    #define _ptr __pad[1]
    #define _base __pad[2]
    #endif
  • 并将buf.c文件余下的95~121行代码替换成如下代码(标粗的三处是修改的地方)
  • int
    is_unbuffered(FILE *fp)
    {
        return(fp->_flags & _IONBF);
    }
    
    int
    is_linebuffered(FILE *fp)
    {
        return(fp->_flags & _IOLBF);
    }
    
    int
    buffer_size(FILE *fp)
    {
    #ifdef _LP64
        return(fp->_IO_buf_end - fp->_IO_buf_base);
    #else
        return(BUFSIZ);    /* just a guess */
    #endif
    }
    
    #else
    
    #error unknown stdio implementation!
    
    #endif

再次执行make命令就没有错误啦~

4.复制make生成的相关头文件和库文件到环境中去

sudo cp ./include/apue.h /usr/include/
sudo cp ./lib/libapue.a /usr/lib/

5.运行示例

以本书第一段代码myls为例,它也就是apue.3e/intro/ls1.c文件,执行过make命令之后,ls1.c所在的目录下有对应的ls1可执行文件,直接运行,结果如下所示

lmy@lmy-LAPTOP:~/linux_unix/apue.3e/intro$ ./ls1 .
Makefile
mycat
shell1
getcputc.c
ls1.c
testerror.c
shell2
mycat.c
.
uidgid.c
hello
shell2.c
getcputc
shell1.c
..
hello.c
testerror
uidgid
ls1
lmy@lmy-LAPTOP:~/linux_unix/apue.3e/intro$ ./ls1 root
can‘t open root: No such file or directory

apue.3e的编译运行+Ubuntu20.04

原文:https://www.cnblogs.com/my16/p/15098163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!