라이브러리 참조 관련 문제입니다. (pango 컴파일 도중)

poplinux의 이미지

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 를 컴파일할때 라이브러리 위치를 잘못 선정했다.

조언 부탁드립니다.

bushi의 이미지

1 번인지 2번 인지 내용만 봐서는 모르겠습니다만,
무엇인가 설치하는 부분에서 이상이 있었던 것 같습니다.
메시지를 보면 fontconfig, libpng, dfb 라이브러리 링크를 시도조차하지 않는 것 같은데,
*.pc 를 살펴보세요. 뜻대로 되어 있는지.

cairo.pc 의 내용 중에

Requires: freetype2 >= 8.0.2 fontconfig xrender libpng12

가 있다면
freetype2.pc, fontconfig.pc, xrender.pc, libpng12.pc 도 같이 참조되며
모두의 LFLAGS, CFLAGS 가 합체됩니다.
[bushi@rose ~]$ PKG_CONFIG_PATH=/usr/lib/pkgconfig pkg-config --libs cairo
-lcairo -lfreetype -lz -lfontconfig -lXrender -lpng12 -lX11
[bushi@rose ~]$

PKG_CONFIG_PATH 만 바꿔서 실행해보세요. 위의 예는 제 데스크탑의 경우입니다. X11 사용하는.

덧.
대략 1990년 대 후반쯤 부터 거의 대부분 *.pc 를 채용하고 있습니다.
configure 스크립트에서는 대부분의 경우 pkg-config 를 통해 각종 플래그를 얻어옵니다.
따라서 cross compile 을 할 경우나, 기타 다른 목적으로 패키지를 따로 빌드하고 설치해서 사용할 목적이라면, 하신대로 /opt/case1/ 등의 prefix 를 정해서 모두 그쪽으로 설치를 하시는 편이 좋습니다.
패키지 빌드를 하실 때는

PKG_CONFIG_PATH=/opt/case1/usr/lib/pkgconfig ./configure ...

처럼 하시면 되겠고요.
다만... 몇가지 예외가 되는 경우를 잘 살피셔야 되는데,
예를 들어 DFB 같은 경우 directfb.pc 뿐만 아니라 directfb-config 라는 쉘스크립트를 제공하며, dfb 를 이용하는 프로그램의 configure 스크립트에서 pkg-config 가 아니라 directfb-config 라는 쉘스크립트를 호출하는 경우도 있습니다.
이런 경우는, 대부분 DFB_CONFIG 따위의 환경변수를 참조하도록 configure가 만들어져있으니
PKG_CONFIG_PATH=/opt/case1/usr/lib/pkgconfig \
DFB_CONFIG=/opt/case1/usr/bin/dfb-config \
./configure ...

처럼 하면 됩니다.
익명사용자의 이미지

libpng는 설치하셨나요?

dalgarak의 이미지

위의 순서에 언급이 되어있군요.
libpng 설치보다는 아마 cairo configure 때 --enable-png를 안넣으셨을 경우가 더 걸립니다.

------
http://lunapapa.egloos.com , me2day : lunapapa , IRC: LunA_J`etch@#gnome

bushi의 이미지

옵션을 빼먹었다면, libcairo 에 libpng 의 심볼이 들어있을 턱이 없지요.

poplinux의 이미지

도움 주셔서 감사합니다.

cario 컴파일 할 때--enable-png 를 넣었습니다.

일단 도움 주신 내용으로 진행해 보겠습니다.

감사합니다.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.