2012-12-18 1 views
0

libsndfile을 사용하려고합니다. 나는 g ++에도별로 좋지 않습니다. libsndfile을 설치하는 방법은 "make install"을 사용하는 것 같습니다. 나는 그것을 정말로 할 수있어서 디렉토리에 그것을 컴파일했다.libsndfile을 프로젝트로 컴파일하는 방법은 무엇입니까?

내가 여기 자습서 컴파일하려고했다 : 나는 다음과 같은 작업을 수행 할 때

/tmp/ccq5fhbT.o: In function SndfileHandle::SndfileHandle(char const*, int, int, int, int)': 
test.c:(.text._ZN13SndfileHandleC1EPKciiii[SndfileHandle::SndfileHandle(char const*, int, int, int, int)]+0xf4): undefined reference to sf_open' 
/tmp/ccq5fhbT.o: In function SndfileHandle::write(float const*, long)': 
test.c:(.text._ZN13SndfileHandle5writeEPKfl[SndfileHandle::write(float const*, long)]+0x27): undefined reference to sf_write_float' 
/tmp/ccq5fhbT.o: In function SndfileHandle::SNDFILE_ref::~SNDFILE_ref()': 
test.c:(.text._ZN13SndfileHandle11SNDFILE_refD1Ev[SndfileHandle::SNDFILE_ref::~SNDFILE_ref()]+0x20): undefined reference to sf_close' 
collect2: ld returned 1 exit status 

:

g++ -Isrc/ test.c 

내가 얻을 : 나는 다음과 같은 시도 할 때
http://parumi.wordpress.com/2007/12/16/how-to-write-wav-files-in-c-using-libsndfile/

을 :

g++ -lsndfile -Isrc/ test.c 
01 23,516,

나는 내가 g ++ 줄 필요가 전환 확실하지 오전

/usr/bin/ld: cannot find -lsndfile 
collect2: ld returned 1 exit status 

를 얻을.

+0

컴파일에 대한 더 많은 정보를 보내기

./configure --prefix=$HOME/local make make install 

당신은/당신의 LD_LIBRARY_PATH 변수를 수정 설정해야합니다 당신 환경, 어떤 GNU/리눅스 배포판, 나는 당신이 당신의 시스템에 libs를 설치 한 다음 당신의 progra을 컴파일 할 수 있다고 생각한다. 엠. – rendon

답변

4

은 :

export $LD_LIBRARY_PATH=$HOME/local/lib 

다음

g++ -I $HOME/local/include -L $HOME/local/lib -lsndfile testsnd.c -o testsnd 
+0

고맙습니다. 라이브러리를 정적으로 링크 할 수 있습니까? – SamFisher83

+0

글쎄, 정적 버전의 라이브러리가 필요하고 "-lsndfile"바로 전에 "-static"을 추가해야합니다. –

2

GNU/Linux에서 Debian squeeze libsndfile1 라이브러리를 설치했고 프로그램을 문제없이 컴파일합니다.

# apt-get install libsndfile1-dev 
$ g++ -w -o testsnd testsnd.c -lsndfile 

라이브러리를 패키지 관리자 또는 소스 코드와 함께 설치해야합니다. 구성과 함께 libsndfile 설치하는 경우

+0

문제는 해당 컴퓨터에 패키지를 설치할 수 없음을 나타냅니다. – SamFisher83

+0

이유는 무엇입니까? 많은 정보를 제공하지 않습니다. 죄송합니다. – rendon