라이브러리 참조 관련 문제입니다. (pango 컴파일 도중)
글쓴이: poplinux / 작성시간: 목, 2007/04/26 - 3:28오후
gtkDFB (gtk Direct Frame Buffer) build 를 진행중입니다.
다음과 같은 순서로 진행했습니다.
glib
atk
freetype
libxml2
fontconfig
zlib
libpng
DirectFB
cairo
PREFIX = $HOME/work/gtkDFB/result
입니다.
우선 DirectFB 까지는 문제없이 잘 진행되었다는 것을 확신합니다. cairo 도 몇가지 문제점은 있었지만 컴파일해서 설치까지는 되었습니다. 이제 pango 를 작성해야 하는데 configure 를 실행후 config.log를 살펴보면 다음과 같은 로그가 남아 있음을 알 수 있습니다. 물론 컴파일도 안됩니다
configure:21517: arm-linux-gcc -o conftest -I/home/poplinux/work/helios/kernel/include/ -I/home/poplinux/work/helios/gtkDFB/result//include/freetype2 -Wall /home/poplinux/work/helios/gtkDFB/result//lib/libfreetype.so -L/home/poplinux/work/helios/gtkDFB/result//lib -lcairo conftest.c -lcairo >&5 /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternAddInteger' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_gray_1_2_4_to_8' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_error' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_read_user_transform_fn' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternAddBool' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternGetBool' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_strip_16' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_filler' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_create_read_struct' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_interlace_handling' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_bKGD' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_read_fn' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_packing' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_get_io_ptr' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_gray_to_rgb' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_IHDR' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternGetString' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternGetInteger' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternCreate' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternAddString' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_get_valid' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternDel' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternGet' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_create_write_struct' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_palette_to_rgb' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcConfigSubstitute' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_write_info' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcPatternDestroy' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_write_end' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_get_IHDR' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_write_fn' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_tRNS_to_alpha' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_write_user_transform_fn' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_read_info' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_convert_from_time_t' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_destroy_read_struct' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_write_image' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_read_update_info' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_read_image' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_create_info_struct' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `FcFontMatch' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_destroy_write_struct' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `png_set_tIME' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `DirectFBError' /home/poplinux/work/helios/gtkDFB/result//lib/libcairo.so: undefined reference to `direct_memcpy'
현재 위와 같은 문제가 발생했을 때 제가 잘못한 부분은 어떤 부분일까요?
1. cairo 를 잘못 컴파일해서 설치했다.
2. pango 를 컴파일할때 라이브러리 위치를 잘못 선정했다.
조언 부탁드립니다.
Forums:
1 번인지 2번 인지
1 번인지 2번 인지 내용만 봐서는 모르겠습니다만,
무엇인가 설치하는 부분에서 이상이 있었던 것 같습니다.
메시지를 보면 fontconfig, libpng, dfb 라이브러리 링크를 시도조차하지 않는 것 같은데,
*.pc 를 살펴보세요. 뜻대로 되어 있는지.
cairo.pc 의 내용 중에
가 있다면
freetype2.pc, fontconfig.pc, xrender.pc, libpng12.pc 도 같이 참조되며
모두의 LFLAGS, CFLAGS 가 합체됩니다.
PKG_CONFIG_PATH 만 바꿔서 실행해보세요. 위의 예는 제 데스크탑의 경우입니다. X11 사용하는.
덧.
대략 1990년 대 후반쯤 부터 거의 대부분 *.pc 를 채용하고 있습니다.
configure 스크립트에서는 대부분의 경우 pkg-config 를 통해 각종 플래그를 얻어옵니다.
따라서 cross compile 을 할 경우나, 기타 다른 목적으로 패키지를 따로 빌드하고 설치해서 사용할 목적이라면, 하신대로 /opt/case1/ 등의 prefix 를 정해서 모두 그쪽으로 설치를 하시는 편이 좋습니다.
패키지 빌드를 하실 때는
처럼 하시면 되겠고요.
다만... 몇가지 예외가 되는 경우를 잘 살피셔야 되는데,
예를 들어 DFB 같은 경우 directfb.pc 뿐만 아니라 directfb-config 라는 쉘스크립트를 제공하며, dfb 를 이용하는 프로그램의 configure 스크립트에서 pkg-config 가 아니라 directfb-config 라는 쉘스크립트를 호출하는 경우도 있습니다.
이런 경우는, 대부분 DFB_CONFIG 따위의 환경변수를 참조하도록 configure가 만들어져있으니
처럼 하면 됩니다.
libpng는
libpng는 설치하셨나요?
위의 순서에 언급이
위의 순서에 언급이 되어있군요.
libpng 설치보다는 아마 cairo configure 때 --enable-png를 안넣으셨을 경우가 더 걸립니다.
------
http://lunapapa.egloos.com , me2day : lunapapa , IRC: LunA_J`etch@#gnome
옵션을 빼먹었다면,
옵션을 빼먹었다면, libcairo 에 libpng 의 심볼이 들어있을 턱이 없지요.
도움 주셔서
도움 주셔서 감사합니다.
cario 컴파일 할 때--enable-png 를 넣었습니다.
일단 도움 주신 내용으로 진행해 보겠습니다.
감사합니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
댓글 달기