저는 Zed Shaw의 Learn C를 사용하여 C 프로그래밍을 배우려 고 노력하고 있습니다. ex26에서 소프트웨어를 설치하는 데 사용되는 "devpkg"프로그램을 만들었습니다. 이 연습에서는 Apache Portable Runtime 라이브러리를 설치해야합니다. 나는이 프로그램은 다음 메이크 파일을 사용하여 컴파일 할 수 없었다이 연습의 코드를 작성 후 :Library Linking
PREFIX?=/user/local
CFLAGS=-g -Wall -I${PREFIX}/apr/include/apr-1 -I{PREFIX}/apr/include/apr-util-1
LDFLAGS=-L${PREFIX}/apr/lib -lapr-1 -pthread -laprutil-1
all: devpkg
install: all
install -d${DESTDIR}/${PREFIX}/bin/
install devpkg ${DESTDIR}/${PREFIX}/bin/
clean:
rm -f *.o
rm -f devpkg
rm -f *.dSYM
이 메이크 내가 4 월 라이브러리 함수의 모든했다 "$ devpkg 만들"을 사용하는 경우와 같이 작동하지 않았다 선언했다. 사이드 노트로 우분투 가상 머신에서 이것을 실행하고 있습니다. 텍스트에서 주어진 해결책은 config 파일을 변경 한 다음 링커가 적절한 라이브러리를 찾을 수 있도록 "ldconfig"를 실행하는 것입니다.
필자는 ldconfig의 매뉴얼 페이지가 올바르게 기능을 제대로 활용하는지 이해하지 못합니다. ldconfig를 올바르게 실행하려면 어떻게해야합니까?
또한 일부 파고 후에 "LDFLAGS"대신 "LDLIBS"를 사용하여 makefile에서 문제가 해결된다는 참조를 발견했습니다. 나는 메이크 파일을 수정하고 프로그램을 컴파일했다.
C 컴파일러가 APR 라이브러리에 올바르게 링크 할 수있게 해주는 "LDFLAGS"와 "LDLIBS"의 차이점은 무엇입니까? makefile을 올바르게 생성하는 방법을 더 잘 이해할 수있는 편리한 명령 목록이 있습니까?
감사합니다. GNU Make Manual에서
'/ usr/local'이 아닌'/ user/local'이 맞습니까? –
네가 맞습니다. 그러나 나는 여기에 오타를 만들었고 그것은 makefile에 없다. – user2073935