linux2018. 10. 30. 12:24

libpng와 libz는 서로 dependancy가 있어서 libpng 빌드를 위해 libz가 반드시 필요하다.

위의 패키지들의 소스코드와 툴체인이 이미 존재한다는 가정하에 아래의 순서로 빌드하고, 툴체인에 패키지들을 복사(설치) , 타겟보드의 파일시스템에도 복사(설치) 하면 핑핑 잘 돌아간다.


configure에 대한 옵션을 잘 이해하는 것이 무엇보다 중요하다.



생성된 라이브러리 파일을 툴체인과 임베디디 보드에 복사하기 위해 

로컬에 디렉토리인 release 생성 후, 빌드


1,tar zxvf zlib-1.2.11.tar.gz

2,mv zlib-1.2.11 zlib

3,cd zlib

4,mkdir release

5,CC=arm-linux-gcc ./configure --prefix=./release

6,make && make install


release/

├── include

│   ├── zconf.h

│   └── zlib.h

├── lib

│   ├── libz.a

│   ├── libz.so -> libz.so.1.2.11

│   ├── libz.so.1 -> libz.so.1.2.11

│   ├── libz.so.1.2.11

│   └── pkgconfig

│       └── zlib.pc

└── share

    └── man

        └── man3

            └── zlib.3


-> 생성된 라이브러리를 툴체인에 복사

7, cd release

8, tar cvzf zlib.tar.gz include/ lib/ share/

9, cd ../../../../toolchain/stbgcc-4.8-1.5/arm-linux-gnueabihf/

10,cp ../../../factory_app/EXT/zlib/release/zlib.tar.gz .

11,tar zxvf zlib.tar.gz


libpng cross compile



1, tar xvf libpng-1.6.35.tar.xz

2, mv libpng-1.6.35 libpng

3, cd libpng

4, mkdir release

5, ./configure --host=arm-linux-gnueabihf CC=arm-linux-gcc AR=arm-linux-ar STRIP=arm-linux-strip RANLIB=arm-linux-ranlib --prefix=~/EXT/libpng/release

6, make && make install


$ tree .

.

├── bin

│   ├── libpng16-config

│   ├── libpng-config -> libpng16-config

│   ├── pngfix

│   └── png-fix-itxt

├── include

│   ├── libpng16

│   │   ├── pngconf.h

│   │   ├── png.h

│   │   └── pnglibconf.h

│   ├── pngconf.h -> libpng16/pngconf.h

│   ├── png.h -> libpng16/png.h

│   └── pnglibconf.h -> libpng16/pnglibconf.h

├── lib

│   ├── libpng16.a

│   ├── libpng16.la

│   ├── libpng16.so -> libpng16.so.16.35.0

│   ├── libpng16.so.16 -> libpng16.so.16.35.0

│   ├── libpng16.so.16.35.0

│   ├── libpng.a -> libpng16.a

│   ├── libpng.la -> libpng16.la

│   ├── libpng.so -> libpng16.so

│   └── pkgconfig

│       ├── libpng16.pc

│       └── libpng.pc -> libpng16.pc

└── share

    └── man

        ├── man3

        │   ├── libpng.3

        │   └── libpngpf.3

        └── man5

            └── png.5


9 directories, 23 file



7, cd release

8, tar cvzf libpng.tar.gz bin/ include/ lib/ share/

9, cd ../../../../toolchain/stbgcc-4.8-1.5/arm-linux-gnueabihf/

10,cp ../../../factory_app/EXT/libpng/release/libpng.tar.gz .

11, tar xvzf libpng.tar.gz


libz


ln -s libz.so.1.2.11 libz.so

ln -s libz.so.1.2.11 libz.so.1


libpng


ln -s libpng16.so.16.35.0 libpng16.so.16

ln -s libpng16.so.16.35.0 libpng16.so

ln -s libpng16.so libpng.so



위의 command들을 makefile에 merge


출처 : https://badayak.com/entry/make-z-png-jpeg-so-lib-file




Posted by easy16