我正在尝试使用拍卖检查我的音频文件的真实性。添加 libstdc++-libc6.2-2.so.3 后,我可以在 Synology NAS (DS918+) 上成功运行 Linux 二进制文件。我想在我的 MacBook Pro 笔记本电脑上更快地完成此操作。我在 Debian GNU Linux 9(在 Parallels Desktop 中)中重复了相同的步骤,导致出现此错误:
Fatal error: glibc detected an invalid stdio handle
fish: 'aucdtect' terminated by signal SIGABRT (Abort)
数据库:
(gdb) run
Starting program: /usr/local/bin/aucdtect
Fatal error: glibc detected an invalid stdio handle
Program received signal SIGABRT, Aborted.
0xf7fd7c89 in __kernel_vsyscall ()
(gdb) bt
#0 0xf7fd7c89 in __kernel_vsyscall ()
#1 0xf7d8fdf0 in raise () from /lib32/libc.so.6
#2 0xf7d912b7 in abort () from /lib32/libc.so.6
#3 0xf7dcb3af in ?? () from /lib32/libc.so.6
#4 0xf7dcb3ec in __libc_fatal () from /lib32/libc.so.6
#5 0xf7dcbd73 in ?? () from /lib32/libc.so.6
#6 0xf7da641b in vfprintf () from /lib32/libc.so.6
#7 0xf7dad7c8 in fprintf () from /lib32/libc.so.6
#8 0x080492d4 in ?? ()
#9 0xf7d7c286 in __libc_start_main () from /lib32/libc.so.6
#10 0x080489b1 in ?? ()
(gdb)
#0 0xf7fd7c89 in __kernel_vsyscall ()
#1 0xf7d8fdf0 in raise () from /lib32/libc.so.6
#2 0xf7d912b7 in abort () from /lib32/libc.so.6
#3 0xf7dcb3af in ?? () from /lib32/libc.so.6
#4 0xf7dcb3ec in __libc_fatal () from /lib32/libc.so.6
#5 0xf7dcbd73 in ?? () from /lib32/libc.so.6
#6 0xf7da641b in vfprintf () from /lib32/libc.so.6
#7 0xf7dad7c8 in fprintf () from /lib32/libc.so.6
#8 0x080492d4 in ?? ()
#9 0xf7d7c286 in __libc_start_main () from /lib32/libc.so.6
#10 0x080489b1 in ?? ()
我想这可能是因为该程序太旧(2004 年)并且与较新的库不兼容。我如何找出导致问题的库(可能是 libc?),以及我应该获取哪个旧版本?
答案1
从我记事起,我就一直在 wine 下使用 auCDtect:
wine ~/bin/auCDtect.exe -v -mS0 '*.wav'
你也可以考虑https://github.com/alexkay/spek以视觉形式显示波形。您可以立即查看音频文件是否已被不良编码器处理,尽管良好的编码器(例如 Apple AAC,即使在 256Kbit/秒)通常也几乎不可能检测到这种方式,但 auCDtect 也会将它们显示为 CDDA。
要查看它使用哪些共享库,您可以通过运行它ldd /path/to/binary
。它不会让您了解它需要哪些版本的库。
答案2
我曾经ldd /usr/local/bin/aucdtect
找到使用的库aucdtect
(主要是libc和libm),从我的NAS复制过来,放在与 相同的目录中aucdtect
,并设置LD_LIBRARY_PATH
为/usr/local/bin
.使用这个方法,我就能够aucdtect
在虚拟机中运行了。然而,wine
在 macOS 上使用比在虚拟机中使用快了近 3 倍(样本大小=1),所以我最终使用了它wine
。