기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.


안녕하세요.


저는 현재


opencv 를 컴파일해서 타겟보드에서 사용해보려고 하고있습니다.

opencv를 크로스컴파일을 하다보니 ffmpeg, zlib, libpng 등이 필요해서

그것들부터 크로스컴파일을 하는 중 이었습니다.



일단 zlib 부터 컴파일을 하였습니다.


툴체인 위치는

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux로 사용중입니다.

크로스 컴파일러는

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/bin/arm-linux-gnueabihf-gcc

이것으로 컴파일 하였습니다.


일단 zlib-1.2.8 버전을 컴파일하였습니다.

prefix 를 툴체인과 같은 경로로 설정하였습니다.

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr

이렇게 설정하였고 make install 하여서


저 경로에

bin/ include/ lib/ share 폴더가 생긴것을 확인하였습니다.

file 명령을 통하여 적절히 타겟보드용으로 크로스 컴파일 된것도 확인 하였습니다.


그리고 libjpeg 또한 똑같은 방법으로

prefix를 zlib과 동일하게 하여서 크로스 컴파일을 하였습니다.


그리고 이제 문제가 생긴게 libpng 를 컴파일 하다가 문제가 생겼는데..

libpng-1.2.52 버전을 크로스 컴파일을 시도하기 위해서

.configure 를 하는데..


checking for memset... yes
checking for pow... (cached) no
checking for pow in -lm... (cached) yes
checking for zlibVersion in -lz... no
configure: error: zlib not installed


맨 하단에 저렇게 zlib 를 못 찾고서 에러가 나버립니다.


아무래도 크로스컴파일러가 libpng를 configure를 하면서 zlib의 라이브러리가 필요해서

찾아보았는데... zlib의 라이브러리를 못 찾고서 에러가 발생한것같은데요..


이럴 경우.. 제가 기존에 zlib 와 libjpeg 등 기존에 크로스컴파일한 자료들은 등록(?) 하는 과정이 필요할거같은데요..


export LD_CONFIG_LIBDIR=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr

이렇게 지정도 해보고

export PKG_CONFIG_PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr

이렇게 지정도 해보고..


/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/lib/pkgconfig

여기에서

export PKG_CONFIG_PATH=$PWD

이렇게도 해봤는데..


ZLIB를 못 찾습니다..


툴체인에... 라이브러리를 추가하는 방법은

어떻게 해야지 맞는지.. 알고싶습니다...


답변..부탁드립니다...감사합니다...

==========================================================


일단

제가 크로스컴파일한 라이브러리를

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr 에 모두 모으고 있습니다.

그래서

CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/include

LDFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/lib


이렇게해서 configure 할때 같이 추가해줘서 zlib가 없다는 문제는 해결했습니다.


앞으로 크로스컴파일한 결과물들을 모두 prefix로 /opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr 경로에

모으면서 다른것을 크로스컴파일할때 CFLAGS, LDFLAGS로 추가해주려하는데

제가 하는 방법이 올바른 방법일까요...??


그리고.. 작업을 하다보니 궁금한것이..

컴파일하여서 라이브러리를 참조하다보니

컴파일러 버전과 프로그램간의 호환버전이 참 중요한것같습니다.


현재 AM3358 칩에 OPENCV를 돌려보고싶어서 이런것을 하고있는데..

제가 사용하는 컴파일러에는 어떤 버전의 LIBPNG와 LIBJPEG, OPENCV는 무슨 버전을 하는지

찾아내는것은.. 그냥 컴파일을 돌려서 알아보는 방법 밖에없을까요..?


노하우가 있을가요?


유형목

2018.03.22 15:08:41
*.170.154.206

환경변수를 설정하는 env.sh 같은 스크립트를 만들어서 그 안에 써주는게 좋겠네요.


...

export CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/include

export LDFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/lib

고도리

2018.03.22 23:01:14
*.172.65.107



export PKG_CONFIG_PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/lib/pkgconfig
를 하면 보통 해결됩니다.

단, 이 디렉토리의 zlib.pc 와 같은 파일을 보시면 아마도.....
/usr로 되어 있을겁니다.

그 부분을 바꿔주셔야 합니다.

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr

이런식으로요...
-----------------------
이렇게 바꾸신 후
export PKG_CONFIG_PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux/usr/lib/pkgconfig

해 주시고, libpng의 ./configure를 진행하시면 문제없이 진행되실겁니다.

-----------------------
해결하신 방법은 위의 내용을 명시적으로 CFLAGS와 LDFLAGS를 추가적으로 더 지정해서 넘어간 것으로 보시면 됩니다.
크로스 컴파일러의 문제는

cross compile시 환경과 install될 때, 그리고 running 될 때 참조되는 디렉토리가
Native compile시와 다른데 있습니다.

고생의 길로 들어가셨는데, 축하드립니다.
(임베디드)리눅스에서의 고수(북치는 사람???...ㅎㅎ)의 길로 첫걸음 떼신 듯 하네요....^^

- 중국 호텔에서 컵라면먹으면서 씁니다 ^^

고도리

2018.03.22 23:07:05
*.172.65.107

참, 공부하시는 거라면 지금 하시는 방법이 제일 좋을거라고 보여집니다.


다만, 업무라면 buildroot를 사용하셔서 컴파일러를 외부(지금 사용하시는) 컴파일러로 지정해서 rootfs와 toolchain의 library구성을 하시는 것도 나쁘지 않을겁니다.


저도, 재작년에 buildroot 오랜만에 빡씨게 쓰면서 함 해봤는데, 결론은 buildroot를 이용한 방법이 가장 효율적으로 노가다 양을 줄이는 길이었습니다.


요즘 제가 하는 방법은... crosstoolchain은 해서...


1. crosstool-ng를 이용해서 만든다.

2. 이 만들어진 툴을 buildroot의 툴체인으로 import한다.

3. buildroot를 make해서 새롭게 생성된 관련 라이브러리가 포함된 툴체인을 확보한다.


입니다.

유형목

2018.03.27 11:21:57
*.170.154.206

다만 buildroot의 일부 패키지 버전이 좀 오래되서 빌드 에러를 뿜을때가 간혹 있습니다.
크로스 컴파일할때 몇개의 빌드 옵션을 수정해야 하는 경우도 생깁니다.

이런 경우는 어느 패키지를 쓰느냐에 따라 각자 달라지므로 부딫혀 보는수밖에 없을듯 싶군요.

블루스카이

2018.04.02 00:05:45
*.190.131.234

cross-build 하지 마시고 native build 추천 합니다.

 

참고 하시면 Cortex-A8에서 사용하실 수 있는 native compiler set 있습니다. 지금 확인해 보니 버전이 너무 낮아 어떨 지 모르겠습니다.

참고로 하기 정보도 있습니다.


Native Build 환경 구성에 대한 강좌를 해보고 싶은데 망설여 지는 것은 뭐 때문일까요?????

고도리

2018.04.02 15:09:40
*.170.154.206

Native Build 환경 구성에 대한 강좌를 해보고 싶은데 망설여 지는 것은 뭐 때문일까요?????

--> 넘 노가다인데다, 과연 몇명이나 제대로 따라해 볼까나??? 정도가 아닐까 합니다...^^


제 경우 Native는 아주 예전에 직접 함 해봤었는데, 지금은 그냥


- ubuntu : native 환경

- buildroot: cross환경

- armedslack(slackware for arm) : native 환경


정도를 적절히 골라서 사용합니다.

요즘은 시간도 없고, 일은 빨리해야해서 위 환경만 쓰게 되더군요.

블루스카이

2018.04.09 10:54:34
*.53.172.198

처음 Native Build 환경 구성을 시도할 때는 일주일 정도 작업 했던 것으로 기억하는데 익숙해 지니까 한 4시간 작업하면 Target 환경 구성이 가능해 지더라구요. 그리고 한번 빡세게 작업을 해 주었더니 linux filesystem에 필수로 들어가는 명령어나 package에 대한 개념을 확실히 알수 있고, 추후 Application 설치시에 의존성 등에 대해서도 참고할 내용이 많더라구요.

전체 파일시스템 내용을 알고 있기 때문에 filesysem diet도 맘대로 할 수 있구요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
6348 Hantek 오실로스코프 쓸만 한가요? [4] 김민욱 2019-07-08 404
6347 터미널 창 에서 실행파일 전송하는 방법? [4] 김민욱 2019-07-03 521
6346 락칩 대리점 찾아요... [2] 김민욱 2019-05-24 621
6345 RK3288로 개발을 하는데요. 질문이 있습니다. [7] 김민욱 2019-05-18 345
6344 JNI 에러 발생에 대하여.... [1] 하하호호하하 2019-04-18 343
6343 Web Application Server 또는 Web Server에 대한 질문 [2] SpecialCase 2019-03-28 206
6342 질문만 가끔 드려서 죄송합니다만... [2] 김증일 2018-12-19 255
6341 RISC-V 에 관한 전망 [4] 김민욱 2018-12-04 353
6340 삼성의 SmartThings와 호환가능한 제품을 개발하기 위한 규약에 대한... [3] 테크 2018-09-29 532
6339 Android Framework 관련 교육 아시는분 추천 부탁드려요. [5] whiterub 2018-09-07 459
6338 MCU / AP [6] 김민욱 2018-08-27 8961
6337 안드로이드 루트 권한 관련 문의 [3] 지누 2018-06-26 463
6336 AP 추천 받습니다. [2] 김민욱 2018-05-29 349
6335 임베디드 안드로이드 초보 문의 [2] 지누 2018-05-19 357
6334 [RK3399] FireFly Linux kernel build Error [7] 김민욱 2018-04-19 815
6333 LCD 질문드립니다. file [2] 하하호호하하 2018-04-12 258
» 툴체인으로 크로스컴 파일 시도때 라이브러리 참조 문제 질문드려요. [7] 노루발 2018-03-22 906
6331 [RK3399] FireFly Android Compile Error [1] 김민욱 2018-03-20 531
6330 컴파일 시 libc 와 관련된 골아픈 질문.. [11] 칼마 2018-02-27 3468
6329 [Exynos 8895 chip구매관련] [7] 밥줘잉 2018-02-03 572

사용자 로그인