"크로스컴파일"의 두 판 사이의 차이
(→빌드순서) |
|||
17번째 줄: | 17번째 줄: | ||
exec pkg-config "$@" | exec pkg-config "$@" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | =소스작성과정= | ||
+ | ==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(hello, 1.0) | ||
+ | |||
+ | ==configure 생성== | ||
+ | $ aclocal | ||
+ | $ autoheader | ||
+ | $ autoconf | ||
+ | |||
+ | ==Makefile.in 생성== | ||
+ | $ automake --foreign --add-missing --copy | ||
+ | |||
+ | ==Makefile 생성== | ||
+ | $ ./configure | ||
=빌드순서= | =빌드순서= |
2019년 5월 26일 (일) 07:15 판
타겟: 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 "$@"
소스작성과정
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(hello, 1.0)
configure 생성
$ aclocal $ autoheader $ autoconf
Makefile.in 생성
$ automake --foreign --add-missing --copy
Makefile 생성
$ ./configure
빌드순서
$ aclocal $ autoheader $ autoconf $ automake --add-missing -copy $ ./configure $ make $ make check $ make install
흔히 configure 전까지의 과정을 묶어서 bootstrap 또는 autogen.sh 라는 script 로 만들어서 한꺼번에 실행시킨다.