나는 사용하려고경매내 오디오 파일의 진위를 확인하세요. 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
나는 기억할 수 있는 한 오랫동안 와인 아래에서 auCDtect를 사용해 왔습니다.
wine ~/bin/auCDtect.exe -v -mS0 '*.wav'
당신은 또한 고려할 수 있습니다https://github.com/alexkay/spek파형을 시각적 형태로 표시합니다. 오디오 파일이 불량 인코더에 의해 처리되었는지 즉시 확인할 수 있습니다. 비록 좋은 인코더(예: Apple AAC, 심지어 256Kbit/sec)는 일반적으로 이런 방식으로 감지하는 것이 거의 불가능하지만 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
.