【已解决】squashfs4.3编译过程中的一些问题,找不到major()和minor()函数的定义,找不到‘makedev’

Q: 执行./build.sh时,mksquashfs.c和unsquashfs.c报错找不到major()和minor()函数的定义,找不到‘makedev’

cc -O2  -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -DCOMP_DEFAULT=\"gzip\" -Wall -DGZIP_SUPPORT -DXATTR_SUPPORT -DXATTR_DEFAULT   -c -o mksquashfs.o mksquashfs.c
mksquashfs.c: In function ‘create_inode’:
mksquashfs.c:987:24: error: called object ‘major’ is not a function or function pointer
  987 |   unsigned int major = major(buf->st_rdev);
      |                        ^~~~~
mksquashfs.c:987:16: note: declared here
  987 |   unsigned int major = major(buf->st_rdev);
      |                ^~~~~
mksquashfs.c:988:24: error: called object ‘minor’ is not a function or function pointer
  988 |   unsigned int minor = minor(buf->st_rdev);
      |                        ^~~~~
mksquashfs.c:988:16: note: declared here
  988 |   unsigned int minor = minor(buf->st_rdev);
      |                ^~~~~
mksquashfs.c:1011:24: error: called object ‘major’ is not a function or function pointer
 1011 |   unsigned int major = major(buf->st_rdev);
      |                        ^~~~~
mksquashfs.c:1011:16: note: declared here
 1011 |   unsigned int major = major(buf->st_rdev);
      |                ^~~~~
mksquashfs.c:1012:24: error: called object ‘minor’ is not a function or function pointer
 1012 |   unsigned int minor = minor(buf->st_rdev);
      |                        ^~~~~
mksquashfs.c:1012:16: note: declared here
 1012 |   unsigned int minor = minor(buf->st_rdev);
      |                ^~~~~
mksquashfs.c: In function ‘dir_scan2’:
mksquashfs.c:3527:17: warning: implicit declaration of function ‘makedev’ [-Wimplicit-function-declaration]
 3527 |   buf.st_rdev = makedev(pseudo_ent->dev->major,
      |                 ^~~~~~~
make: *** [<builtin>: mksquashfs.o] Error 1

解决方法

step1

vim ./buid.sh
注释掉以下两句

在这里插入图片描述

这里是为了下一步我们修改mksquashfs.c和unsquashfs.c不被覆盖。

step2

在mksquashfs.c和unsquashfs.c文件中加上头文件

include <sys/sysmacros.h>

step3

再次运行./buid.sh

其他问题

wget https://downloads.sourceforge.net/project/squashfs/squashfs/squashfs4.3/squashfs4.3.tar.gz
时卡住,可以修改./buid.sh中的这句代码,换成sourceforge的镜像

https://liquidtelecom.dl.sourceforge.net/

将下载地址中https://nchc.dl.sourceforge.net/改为https://liquidtelecom.dl.sourceforge.net/

参考

  1. https://blog.csdn.net/zhangxu5274/article/details/116033700
  2. https://blog.csdn.net/u012763794/article/details/79957554
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值