makefile 을 작성중입니다.. 그런데. -Wl,--rpath,-Wl 옵션 때문
글쓴이: facered79 / 작성시간: 화, 2005/06/21 - 9:30오전
기존의 Makefile 에 libxml2 에 관련한 옵션들을 추가하는 작업을 진행 중인데요..
libxml2를 컴파일 하기 위한 옵션들은 아래와 같습니다.
gcc -g -O2 -Wall -o reader2 reader2.c /usr/local/libxml2/lib/libxml2.so -lpthread -lz -lm [b]-Wl,--rpath -Wl,/usr/local/libxml2/lib[/b] -I /usr/local/libxml2/include/libxml2/
저기 청색 부분 의 내용이 무엇인지 궁금합니다..
일단 다른곳 찾아봤는데 ld.so.conf 에 lib path 를 기록해주는것과 같은 것이라고 해서 ld.so.conf 에 저 경로를 기록한후 컴파일 옵션에서 제외를 시키고 (컴파일은 제외를 시켜도 잘 됩니다.)
실행을 하면 아래와 같은 오류가 발생합니다..
Warning: program compiled against libxml 206 using older 205 ./reader2: relocation error: ./reader2: undefined symbol: xmlReaderForFile
기존의 Makefile에 추가적인 옵션을 넣어주기 위해 이러한 상황에서는 어떻게 해주어야 되나요.. 답변해주시면 감사하겠습니다..
그럼.
Forums:
[code:1]/usr/local/libxml2/lib/libxml2
파일을 link 하려고 하신다면
옵션 -L은 라이브러리 패스를 지정합니다
옵션은 libxml2.so 라이브러리를 지정합니다.
확장자는 시스템에 따라 다른경우도 있습니다.
를 추가...
말씀하신 방법으로 컴파일 하면요..
위와 같은 에러가 발생합니다..
아.. 죽겠네요 진짜. ㅜㅜ
제 환경은 redhat 9.0 이구요
지금 할려고 하는것은
libxml2 를 이용해 xml 문서를 읽어오는 것입니다.
복잡하게 되어 있는 Makefile 을 간략화 시킬려고 하고 있는데..
정말 어렵네요...
해당 xml 라이브러리에 "xmlReaderForFile" 함수가 있는지
해당 xml 라이브러리에 "xmlReaderForFile" 함수가 있는지 확인하시기바람니다.
man nm
Re: 말씀하신 방법으로 컴파일 하면요..
혹시 /usr/lib/ 나 /usr/local/lib
에 libxml2.so가 있는거 아닌가여?
제가 알기로는 ld.so에 등록해도
여기 있는게 먼저 사용되는거로 압니다.
즐린
특별한 이유가 없다면 일일히 CFLAGS와 LIBS (또는 LDFLAGS
특별한 이유가 없다면 일일히 CFLAGS와 LIBS (또는 LDFLAGS)를 직접 위와 같이 쓸 필요 없습니다. pkg-config를 써서 관련 변수를 설정하고 컴파일하기 바랍니다. 예를 들어 libxml2를 쓰는 hello-xml.c가 있다고 하면:
또, 직접 dynamic linking을 제어하는 것보다 libtool을 쓰는 것이 더 깔끔하고 편합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기