2010-03-30 2 views
0

나는 kubuntu의 패키지 관리에서이 편리한 pnglite 라이브러리를 설치했다. 여기에는 하나의 헤더 파일 "pnglite.h"와 하나의 오브젝트 파일 "pnglite.o"만 있습니다. 그 파일이 어디에 있는지 알았지 만 링크하는 법을 모르겠습니다. netbeans를 사용하고 있지만 거기에 링크하는 방법을 모르겠습니다. 또한 콘솔에서 링크하는 방법을 이해하지 못합니다.c에서 pnglite 라이브러리를 연결하는 방법?

테스트하고 싶은 테스트 프로그램이 있는데 "함수에 대한 정의되지 않은 참조 : XXXXXXX"라는 오류 메시지가 나타납니다. netbeans와 콘솔에서 모두 gcc를 사용하고 있습니다. 그 헤더 파일은/usr/include 디렉토리에 있고, 오브젝트 파일은/usr/lib 디렉토리에 있고 테스트 프로그램은 내 홈 디렉토리의 프로그래밍 디렉토리에 있습니다.

원본과 동일한 디렉터리에 헤더와 개체를 넣어야합니까? 또는 현재 위치에서 연결하는 방법이 있습니까? 나는 그들이 현재있는 곳에서 그들을 연결하는 것이 가능해야하며, 어떻게해야 하는지를 알고 이해하고 싶다는 것을 알고 있습니다.

은 어떤 도움

+0

그것 정말, 정말 이상한. 하나의 객체 일지라도 실제로는 적절한 공유 객체 여야합니다. 그렇지 않으면 이처럼 혼란이 계속 발생합니다. 이미 링크 된 프로그램에 영향을 미치지 않는 라이브러리에 대한 업데이트는 말할 것도 없습니다./usr/lib에 .so가 없다는 것이 확실합니까? –

답변

2

당신은 단지 GCC의 당신의 연결 호출에 /usr/lib/pnglite.o를 추가해야합니다 :) 감사, 플러스 어느 pnglite은 (는 ZLIB을 필요로 나타납니다 귀하의 코멘트에서) 공유 라이브러리를합니다. 예 소스는 다음에 myapp1.cmyapp2.c 인 경우 : 그들이 그런 라이브러리를 포장하는

gcc -c myapp1.c 
gcc -c myapp2.c 
gcc -o myapp myapp1.o myapp2.o /usr/lib/pnglite.o -lz 
+0

답변 주셔서 감사합니다. 나는 그것이 일반적인 경우에 그것을 할 것이라고 생각한다. 나는 그것을 시도했지만, 이제는 "crc32 '에 대한 정의되지 않은 참조를 말하는 pnglite.o를 참조하는 많은 오류 메시지가 나타납니다. 그게 뭔지 전혀 몰라. – zaplec

+0

app 또는 pnglite.o가 컴파일 된 개체 파일이나 공유 라이브러리에없는 리소스 crc32를 사용하기 때문에 링커가 실패합니다. pnglib없이 빌드했을 때와 동일한 공유 라이브러리를 사용 했습니까? – Erik

+0

@zaplec : pnglite 객체는 일부 공유 라이브러리에 연결되어야합니다. 예를 들어'crc32'는 zlib에 있으므로 링크 줄에'-lz'를 추가합니다 (나는 대답을 업데이트했습니다). – caf

관련 문제