"크로스컴파일"의 두 판 사이의 차이
(→configure.ac 생성) |
|||
5번째 줄: | 5번째 줄: | ||
$ sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf | $ sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf | ||
− | =pkg- | + | =pkg-config 스크립트= |
+ | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/sh | #!/bin/sh | ||
18번째 줄: | 19번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | = | + | =빌드과정= |
+ | |||
+ | 흔히 configure 전까지의 과정을 묶어서 bootstrap 또는 autogen.sh 라는 script 로 만들어서 한꺼번에 실행시킨다. | ||
+ | |||
==Makefile.am 작성== | ==Makefile.am 작성== | ||
+ | |||
#바이너리명 | #바이너리명 | ||
bin_PROGRAMS = hello | bin_PROGRAMS = hello | ||
#소스명 | #소스명 | ||
hello_SOURCES = hello.c | hello_SOURCES = hello.c | ||
+ | |||
==configure.ac 생성== | ==configure.ac 생성== | ||
+ | |||
$ [[autoscan]] | $ [[autoscan]] | ||
+ | |||
생성된 configure.scan를 수정하여 configure.ac로 저장 | 생성된 configure.scan를 수정하여 configure.ac로 저장 | ||
37번째 줄: | 45번째 줄: | ||
==configure 생성== | ==configure 생성== | ||
+ | |||
$ aclocal | $ aclocal | ||
$ autoheader | $ autoheader | ||
42번째 줄: | 51번째 줄: | ||
==Makefile.in 생성== | ==Makefile.in 생성== | ||
+ | |||
$ automake --foreign --add-missing --copy | $ automake --foreign --add-missing --copy | ||
==Makefile 생성== | ==Makefile 생성== | ||
+ | |||
$ ./configure | $ ./configure | ||
− | = | + | ==빌드== |
− | + | ||
− | |||
− | |||
− | |||
− | |||
$ make | $ make | ||
$ make check | $ make check | ||
$ make install | $ make install | ||
− | |||
− |
2019년 5월 26일 (일) 07:44 판
타겟: arm
목차
크로스 컴파일러 설치
$ sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
pkg-config 스크립트
#!/bin/sh
if [ "$CROSS_COMPILING" = TRUE ]; then
SYSROOT=[타켓루트경로]
export PKG_CONFIG_PATH=${SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig:${SYSROOT}/usr/share/pkgconfig
export PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
fi
exec pkg-config "$@"
빌드과정
흔히 configure 전까지의 과정을 묶어서 bootstrap 또는 autogen.sh 라는 script 로 만들어서 한꺼번에 실행시킨다.
Makefile.am 작성
#바이너리명 bin_PROGRAMS = hello #소스명 hello_SOURCES = hello.c
configure.ac 생성
$ autoscan
생성된 configure.scan를 수정하여 configure.ac로 저장
AC_INIT, AM_INIT_AUTOMAKE는 필수이다.
AC_INIT는 적절히 수정한다.
AM_INIT_AUTOMAKE는 추가한다.
AM_INIT_AUTOMAKE
configure 생성
$ aclocal $ autoheader $ autoconf
Makefile.in 생성
$ automake --foreign --add-missing --copy
Makefile 생성
$ ./configure
빌드
$ make $ make check $ make install