ARM기반 Embedded System에 tiff-3.8.2 포팅시에 다음과 같은 오류가 나는데요..
ARM기반 Embedded System에 tiff-3.8.2를 포팅할려구 하는데..
일단 source 받아서,
CC=arm-linu-... AR=... AS=.. ./configure --enable-shared --enable-static --jpeg-include-dir=$(TARGET_FS_PATH)/include --jpeg-lib-dir=$(TARGET_FS_PATH)/lib --zlib-include-dir=$(TARGET_FS_PATH)/include --zlib-lib-dir=$(TARGET_FS_PATH)/lib
하고나서..
make하면..
열심히 file들 compile하고, link 하다가 다음과 같은 오류가 납니다.
/bin/sh ../libtool --mode=link sh4-linux-gcc -g -O2 -Wall -W -L/root/0work/revolution/filesystem/buildfs/usr/lib -L/root/0work/revolution/filesystem/buildfs/usr/lib -o libtiff.la -rpath /usr/lib -no-undefined -version-number 3:8:2 tif_aux.lo tif_close.lo tif_codec.lo tif_color.lo tif_compress.lo tif_dir.lo tif_dirinfo.lo tif_dirread.lo tif_dirwrite.lo tif_dumpmode.lo tif_error.lo tif_extension.lo tif_fax3.lo tif_fax3sm.lo tif_flush.lo tif_getimage.lo tif_jpeg.lo tif_luv.lo tif_lzw.lo tif_next.lo tif_ojpeg.lo tif_open.lo tif_packbits.lo tif_pixarlog.lo tif_predict.lo tif_print.lo tif_read.lo tif_strip.lo tif_swab.lo tif_thunder.lo tif_tile.lo tif_unix.lo tif_version.lo tif_warning.lo tif_write.lo tif_zip.lo ../port/libport.la -ljpeg -lz -lm -lc
libtool: link: sh4-linux-gcc -shared .libs/tif_aux.o .libs/tif_close.o .libs/tif_codec.o .libs/tif_color.o .libs/tif_compress.o .libs/tif_dir.o .libs/tif_dirinfo.o .libs/tif_dirread.o .libs/tif_dirwrite.o .libs/tif_dumpmode.o .libs/tif_error.o .libs/tif_extension.o .libs/tif_fax3.o .libs/tif_fax3sm.o .libs/tif_flush.o .libs/tif_getimage.o .libs/tif_jpeg.o .libs/tif_luv.o .libs/tif_lzw.o .libs/tif_next.o .libs/tif_ojpeg.o .libs/tif_open.o .libs/tif_packbits.o .libs/tif_pixarlog.o .libs/tif_predict.o .libs/tif_print.o .libs/tif_read.o .libs/tif_strip.o .libs/tif_swab.o .libs/tif_thunder.o .libs/tif_tile.o .libs/tif_unix.o .libs/tif_version.o .libs/tif_warning.o .libs/tif_write.o .libs/tif_zip.o -Wl,--whole-archive ../port/.libs/libport.a -Wl,--no-whole-archive -Wl,-rpath -Wl,/usr/lib -Wl,-rpath -Wl,/usr/lib -L/root/0work/revolution/filesystem/buildfs/usr/lib /usr/lib/libjpeg.so -lz -lm -lc -Wl,-soname -Wl,libtiff.so.3 -o .libs/libtiff.so.3.8.2
/usr/lib/libjpeg.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[2]: *** [libtiff.la] 오류 1
분명히 -L 로 link search path를 지정했는데도 불구하고, host에 있는 /usr/lib/libjpeg.so를 찾네요..
libtools 문제 같긴한데.. 도통..
혹시 embedded system library build시에 이런 문제점 해결할 방법이 무엇인지 아시는분 좀..
/etc/ld.config 랑 상관이
/etc/ld.config 랑 상관이 있을지도 모르겠네요. -L 로 지정하면 거기서도 찾는거지 기본으로 찾는 곳에 있는건 안쓰겠다는 말은 아닙니다~
ld.config 파일을 수정하신 다음에 ldconfig 를 하고도 같은 문제가 발생한다면 빌드할 때 임시로 /usr/lib/libjpeg.so 를 다른 곳에 옮겨놓으세요.
--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
윗글을 써놓고
윗글을 써놓고 보니까 빌드 옵션에... /usr/lib/libjpeg.so 가 있네요. -lz 앞에...
생각해보면 tiff 랑 jpeg 이랑은 서로 다른 포멧인데 서로 의존성이 있다는 것도 이상하네요. configure 을 할때 잘못된 옵션을 주셨거나 LD_FLAGS 에 이상한 값이 들어있는게 아닐까 싶은데요?
--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
서로 의존성이 있는
서로 의존성이 있는 것은 아니고, Tiff의 압축 방식 중에 JPEG방식이 있어서 그렇고, libtiff가 TIFF를 JPEG으로 JPEG을 TIFF로 변환하는데 사용하기 때문에 JPEG이 사용됩니다.
그리고, Build Option에는 library를 link하기 때문에 "-ljpeg"라는 옵션을 주는데, 이것이 갑자기.. 제가 지정한 PATH가 아니고 host의 /usr/lib/libjpeg.so로 바뀌어 버리네요.. 쩝..
혹여, libtool이나 automake, autoconfig와 관련된 문제는 아닐까요?
예.
libtool 녀석이 지 맘대로 패스를 바꿔 버리는게 있습니다.
Makefile.am 혹은 Makefile.in 을 수정해주시면 될듯 보입니다.
댓글 달기