Ubuntu20.04 编译运行apue.3e 避坑指南
前提说明:
这里的命令默认在apue.3e解压文件夹目录下运行。
报告权限不够:
make[1]: 进入目录“/home/cxs/code/apue.3e/lib”
make[1]: execvp: ../systype.sh: 权限不够
Makefile:6: ../Make.defines.: 没有那个文件或目录
make[1]: *** 没有规则可制作目标“../Make.defines.”。 停止。
make[1]: 离开目录“/home/cxs/code/apue.3e/lib”
make: *** [Makefile:6:all] 错误 1
解决办法:chmod a+x systype.sh
./fixup.awk rot13a.c >xlate
/bin/sh: 1: ./fixup.awk: Permission denied
make[1]: *** [Makefile:18:rot13c2.c] 错误 126
make[1]: 离开目录“/home/cxs/code/apue.3e/advio”
make: *** [Makefile:6:all] 错误 1
解决办法:chmod a+x ./advio/fixup.awk
undefined reference to `major’
/usr/bin/ld: /tmp/ccmTGRc3.o: in function `main':
devrdev.c:(.text+0xc5): undefined reference to `minor'
/usr/bin/ld: devrdev.c:(.text+0xdb): undefined reference to `major'
/usr/bin/ld: devrdev.c:(.text+0x128): undefined reference to `minor'
/usr/bin/ld: devrdev.c:(.text+0x13e): undefined reference to `major'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:18:devrdev] 错误 1
make[1]: 离开目录“/home/cxs/code/apue.3e/filedir”
make: *** [Makefile:6:all] 错误 1
解决办法:添加#include <sys/types.h>
提示 error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_flag’; did you mean ‘_flags’?
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE buf.c -o buf -L../lib -lapue
buf.c: In function ‘is_linebuffered’:
buf.c:90:15: error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘__pad’; did you mean ‘__pad5’?90 | #define _flag __pad[4]| ^~~~~
buf.c:104:13: note: in expansion of macro ‘_flag’104 | return(fp->_flag & _IOLBF);| ^~~~~
buf.c:105:1: warning: control reaches end of non-void function [-Wreturn-type]105 | }| ^
make[1]: *** [Makefile:16:buf] 错误 1
make[1]: 离开目录“/home/cxs/code/apue.3e/stdio”
make: *** [Makefile:6:all] 错误 1
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE buf.c -o buf -L../lib -lapue
buf.c: In function ‘is_linebuffered’:
buf.c:99:13: error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_flag’; did you mean ‘_flags’?99 | return(fp->_flag & _IOLBF);| ^~~~~| _flags
buf.c:100:1: warning: control reaches end of non-void function [-Wreturn-type]100 | }| ^
make[1]: *** [Makefile:16:buf] 错误 1
make[1]: 离开目录“/home/cxs/code/apue.3e/stdio”
make: *** [Makefile:6:all] 错误 1
解决办法:将./stdio/buf.c
文件的
#ifdef _LP64
#define _flag __pad[4]
#define _ptr __pad[1]
#define _base __pad[2]
#endif
删掉,同时将下面的flag全部换成flags:
int
is_unbuffered(FILE *fp)
{return(fp->_flags & _IONBF);
}int
is_linebuffered(FILE *fp)
{return(fp->_flag & _IOLBF);
}int
buffer_size(FILE *fp)
{#ifdef _LP64return(fp->_IO_buf_end - fp->_IO_buf_base);
#elsereturn(BUFSIZ); /* just a guess */
#endif
}#else#error unknown stdio implementation!#endif
提示:/usr/bin/ld: 找不到 -lbsd
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE badexit2.c -o badexit2 -L../lib -lapue -pthread -lrt -lbsd
/usr/bin/ld: 找不到 -lbsd
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:31:badexit2] 错误 1
make[1]: 离开目录“/home/cxs/code/apue.3e/threads”
make: *** [Makefile:6:all] 错误 1
解决办法:sudo apt-get install libbsd-dev
, 安装所需要的文件库
参考链接:
[1] https://stackoverflow.com/questions/19671152/usr-bin-ld-cannot-find-lbsd
[2] https://stackoom.com/question/3m0WZ/在ubuntu-中使用apue-e中的-make时-如何修复-struct-FILE-没有名为-pad-的成员-错误
Ubuntu20.04 编译运行apue.3e 避坑指南相关推荐
- 【技术分享】戴尔工作站安装Win10+Ubuntu20.04双系统教程与避坑指南
文章目录 引言 1.安装前的几个注意事项(避坑指南) 1.1.有多块硬盘,该如何分配给Win10和Ubuntu系统? 1.2.Ubuntu分区应该怎么分? 2.系统安装步骤 2.1.下载系统镜像 2. ...
- mac下编译android源码避坑指南(新)
截至目前mac环境下android源码编译最新避坑指南 避坑方法 配置(不说配置的都是耍流氓) 下载 编译 烧录 注意事项 避坑方法 源码.SDK.机型版本一定要清楚,有些特殊的版本需要特殊的方法,官 ...
- Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...
- Ubuntu20.04编译并运行imu_utils,并且标定IMU
Ubuntu20.04编译并运行imu_utils,并且标定IMU 一.编译并运行imu_utils 1 安装依赖项 2 下载imu_utils和code_utils 2.1 code_utils编译 ...
- Ununtu 18.04 安装Carla 0.9.13 以及Carla ros bridge 超级避坑指南(更新于2022.10.20)
Carla0.9.13 以及Carla ros bridge 超级避坑指南 Carla0.9.13 以及Carla ros bridge 超级避坑指南 站在巨人肩膀前进 显卡驱动问题 首先就是虚幻4的 ...
- Ubuntu20.04编译Linux内核
Ubuntu20.04编译Linux内核 下载Linux源码 生成.config文件 编译Linux内核 下载Linux源码 Linux源码可以从Linux内核官网进行下载,如下图所示,我下载的是5. ...
- HarmonyOS 开发避坑指南
Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...
- 罗技无线网卡linux,Linux(Ubuntu)装罗技LMS避坑指南
Linux(Ubuntu)装罗技LMS避坑指南 前言:搜索音质好的播放软件时发现MPD竟然可以直接命令行操作.连界面都是在终端里的.满满的极客范,心动.搞起!结果-搞了几个小时.各种折腾.就是读取不到 ...
- VMProtect SDK完全避坑指南
文章目录 前言 编译VMProtect Demo 生成机器码 替换密钥对 生成序列号 总结 前言 在编写软件的时候,通常会有这样一个需求,需要对自己写的软件实现一机一码加密保护,并且最好能够限制使用时 ...
最新文章
- 《x86汇编语言:从实模式到保护模式》读书笔记之后记
- 【软考-软件设计师】总线结构
- SAP CRM Fiori应用My note的技术实现
- HTML DOM节点的属性获取
- corosync和pacemaker实现httpd和mysql双集群
- 学习笔记-AngularJs(四)
- linux下编译安装ACE-6.5.1
- 修改Jupyter Notebook默认工作目录
- CTSC2017 APIO2017 THUSC2017 游记
- loj 6083.「美团 CodeM 资格赛」数码
- poj 3735 Training little cats (矩阵快速幂)
- w ndoWs8pE模式下载,Windows pe下载_Windows pe免费版(Windows PE工具集合)8.2 - 系统之家...
- yolov3安卓实现_Android—yolov3目标检测移植
- HD AUDIO再2003安装的问题
- DM8达梦数据库:sql查询达梦数据库实例的详情
- 软考易错知识点(自用)
- (三)ArcGIS Server之发布要素服务
- Arduino驱动HDC1080测量温湿度
- guzzle php,PHP HTTP 客户端 - Guzzle
- 【C++---16】常指针和常引用
热门文章
- WORD2010自动编号后,目录那里编号和文字中间有很大的空格,怎么
- effective C++ 条款 5:了解c++默认编写并调用那些函数
- [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源
- 娜璋旅行(三)九月的甘肃新疆:人间之边,天堂之界
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1058:求一元二次方程
- 【机器视觉】 dev_update_time算子
- 【Qt】Qt下载教程
- 【Linux系统编程】进程间通信概述
- 【Linux】一步一步学Linux——alias命令(205)
- 【Linux】一步一步学Linux——Bash常用快捷键(11)