Wie man ext4magic-Kompilierungsfehler behebt: error: 'struct ext2_inode' has no member named 'i_dir_acl'?
Problem
Beim Versuch, ext4magic auf modernen Linux-Versionen zu kompilieren, sehen Sie einen Fehler wie diesen:
ext4magic_error.txt
inode.c: In function 'dump_inode':
inode.c:407:82: error: 'struct ext2_inode' has no member named 'i_dir_acl'; did you mean 'i_file_acl'?
407 | inode->i_file_acl, LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0,
| ^~~~~~~~~
| i_file_acl
inode.c:414:63: error: 'struct ext2_inode' has no member named 'i_dir_acl'; did you mean 'i_file_acl'?
414 | LINUX_S_ISDIR(inode->i_mode) ? inode->i_dir_acl : 0);
| ^~~~~~~~~
| i_file_acl
make[2]: *** [Makefile:491: ext4magic-inode.o] Error 1Lösung
Viele Personen sind auf dieses Problem gestoßen, und auf SourceForge hat jemand diesen Patch gepostet.
Der Kern ist einfach: Ersetzen Sie inode->i_dir_acl durch inode->i_size_high und Sie sind fertig.
Glücklicherweise kann dies leicht ohne Übertragung von Patch-Dateien mit sed durchgeführt werden:
fix_ext4magic.sh
sed -i 's/inode->i_dir_acl/inode->i_size_high/g' src/*.cDanach versuchen Sie erneut, mit make zu kompilieren, und der Fehler sollte verschwunden sein.
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