如何修复 ext4magic src/recover.c:478:(.text+0x847): undefined reference to 'makedev'
问题
尝试在现代 Linux 版本上编译 ext4magic 时,你会看到如下错误:
ext4magic_recover_makedev_fix.patch
gcc -O2 -g -D_FILE_OFFSET_BITS=64 -g -O2 -o ext4magic ext4magic-block.o ext4magic-dir_list.o ext4magic-ext4magic.o ext4magic-extent_db.o ext4magic-file_type.o ext4magic-hard_link_stack.o ext4magic-imap_search.o ext4magic-inode.o ext4magic-journal.o ext4magic-lookup_local.o ext4magic-magic_block_scan.o ext4magic-recover.o ext4magic-ring_buf.o ext4magic-util.o -le2p -luuid -lblkid -lz -lbz2 -lmagic -lext2fs
/usr/bin/ld: ext4magic-recover.o: in function `recover_file':
/mnt/nas/ext4magic-0.3.2/src/recover.c:478:(.text+0x847): undefined reference to `makedev'
collect2: error: ld returned 1 exit status解决方案
makedev 函数是 sys/sysmacros.h 头文件的一部分,该头文件未包含在 ext4magic 源代码中。
要修复此问题,你需要在 src/recover.c 文件中添加以下行:
recover.c
#include <sys/sysmacros.h>或者,为了更方便,只需使用以下 shell 脚本替换 recover.c 文件中的一行
fix_recover_c.sh
sed -i -e 's^//header util.h^#include <sys/sysmacros.h>^' src/recover.c现在,使用 make 重试编译,错误应该消失了。
Check out similar posts by category:
Linux
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow