오디오 재생에 pulseaudio를 사용하는 코드를 작성하고 싶습니다. 공식 문서에는 간단한 예제 프로그램이 있습니다:pacat-simple.c.
libpulse-dev
패키지가 설치되었는지 확인 하고 #include
프로그램의 펄스 헤더 d가 실제로 존재하는지 확인했습니다 /usr/include/pulse
. 그런 다음 일이 어떻게 진행되는지 확인하기 위해 조금 가지고 놀려고 했기 때문에 의 pacat-simple.c
파일을 다른 폴더에 복사했습니다 . /usr/share/doc/libpulse-dev/examples/
(이 파일은 실제로 위에 링크한 버전과 약간 다르지만 어쨌든 그렇습니다.)
이 예제 파일에 대한 구체적인 지침을 찾을 수 없기 때문에 간단할 것이라고 생각했습니다.
gcc pacat-simple.c
그러나 이로 인해 링커에서 다음과 같은 오류 메시지가 나타납니다.
/usr/bin/ld: /tmp/cciylcLH.o: in function `main':
pacat-simple.c:(.text+0xf1): undefined reference to `pa_simple_new'
/usr/bin/ld: pacat-simple.c:(.text+0x113): undefined reference to `pa_strerror'
/usr/bin/ld: pacat-simple.c:(.text+0x15b): undefined reference to `pa_simple_read'
/usr/bin/ld: pacat-simple.c:(.text+0x16c): undefined reference to `pa_strerror'
/usr/bin/ld: pacat-simple.c:(.text+0x1f2): undefined reference to `pa_simple_free'
collect2: error: ld returned 1 exit status
몇번의 검색 끝에 나는 하나를 발견했다.이전 포럼 게시물-lpulse-simple -lpulse
이러한 .so
파일 에 연결하려면 다음 플래그를 추가하는 것이 좋습니다 . 돌이켜보면 내가 이 일을 해야 했다는 것이 이해가 된다.
그래서 나는 달리려고 노력한다.
gcc -lpulse-simple -lpulse pacat-simple.c
하지만 위에 표시된 것과 동일한 오류 메시지가 나타납니다(물론 임시 파일 이름은 다릅니다). 내가 놓친 다른 것이 있습니까?
답변1
달리기
gcc pacat-simple.c -lpulse-simple -lpulse
"성공"은 사운드 파일의 파일 이름을 전달하면 스피커에서 횡설수설을 재생하는 실행 파일을 제공합니다. 그러나 동일한 파일 이름을 실제 파일에 전달하면 pacat
일반적으로(항상 그런 것은 아닙니다!) 비슷한 결과를 얻습니다. (가끔 새로 컴파일된 실행 파일이 중지되어 더 빠르게 인쇄됩니다 pa_simple_write() failed: Invalid argument
. 하지만 지금은 이것이 내 시스템에 다른 문제가 있음을 나타내는 것이라고 가정합니다.