libsndfile을 사용하여 오디오 파일에서 일부 데이터를 추출하는 C 프로그램을 만들었습니다.라이브러리를 사용하는 C 프로그램 컴파일
가능한 한 설치 프로그램을 루트 권한없이 설치하는 것이 가능한가요?
Libsndfile을 대상 컴퓨터에서 사용할 수 없으므로 어떻게 든 내 프로그램과 함께 패키지해야합니다. 라이브러리를 정적으로 링크하는 방법이 있습니까? Autotools 자습서도 살펴 봤지만 진행 방법을 잘 모르겠습니다.
내가 패키지 관리자를 사용하여 라이브러리 설치 내 dev에 기계에 차질없이 컴파일 할 수 apt-get install libsnfile1-dev
makefile은 매우 간단합니다 :
이CFLAGS=-std=c99 -Wall -pedantic -g
CLIBS= -lsndfile -lm
BIN=audiodecode
CC=gcc
MAIN=main.o
FILES=
OBJS=$(FILES) $(MAIN)
.PHONY: all
all: clean $(OBJS)
$(CC) $(CFLAGS) -o $(BIN) $(OBJS) $(CLIBS)
.PHONY: clean
clean:
rm -f *.o $(BIN)
당신은 말하지 않았다 - 나는 당신이 리눅스에 있다고 생각하니? 어쨌든, 관련 바로 아래의 답변은 찾고있는 것 같습니다. 예 : http://stackoverflow.com/questions/16027854/gcc-static-library-linking-vs-dynamic-linking 또는 https://stackoverflow.com/questions/3181154/linking-gsl-or-other-library-statically-into-a-shared-library – keshlam
간단히 말해서 공유 라이브러리를 배포하지 않으려면 모든 기능 공유 라이브러리에서 사용하는 호출은 로컬로 (즉, 실행 파일에서) 작성 및 정의되어야합니다. – ryyker