본문 바로가기
토막지식

configure 스크립트에 디버깅 옵션 수정하기

by 보노보노야~ 2020. 12. 16.

gtk 라이브러리 내부를 디버깅해 보고 싶어서 빌드 스크립트 작성법을 공부하게 되었다.

리눅스 환경에서 빌드는 Makefile을 통해서 주로 진행하는데, 이 파일의 작성법을 익히는 게 쉽지 않다. 추가해야 할 라이브러리가 많아지만 작성하게 되는 분량이 지수적으로 증가하는데 gtk의 Makefile은 1000줄이 넘는다. 이를 좀 더 쉽게 만들기 위해서 GNU 빌드 시스템이 등장하게 되었다. 그 중에서도 autotools가 configure 스크립트와 관련이 있다.

autotools 자체는 kldp 위키에 자세히 소개되어 있어서, 이번에는 configure 관련 스크립트를 수정하여 디버깅 옵션을 추가하는 방법에 대해서만 정리하려고 한다.

-

gtk앱의 소스코드를 받아서 1차적으로 빌드하면(apt source gtk+-3.0 --build) configure 파일을 포함해서 Makefile 까지 자동으로 생성된다. configure에는 help 로 사용할 수 있는 옵션을 보여주는 기능이 있다.

./configure --help

옵션을 쭉 살펴보면 --enable_debug 라는 옵션이 있는데, 이 옵션을 활성화하면 컴파일 시 디버깅 심볼까지 함께 컴파일할 수 있다. 하지만 실제로 configure 파일을 들여다보면 enable debug 관련 명령어가 전부 if-else로 구분되어 있는 것이 확인된다.

# Checks for argument
# Check whether --enable-debug was given.
if test "${enable_debug+set}" = set; then :
  enableval=$enable_debug; CFLAGS="$CFLAGS -w -g -O1" CXXFLAGS="$CXXFLAGS -w -g -O1"
else
  CFLAGS="$CFLAGS -w -O3" CXXFLAGS="$CXXFLAGS -w -O3"
fi

즉, 전 단계엔 configure.ac 파일에서 debug 옵션을 줘야 하는 것이라고 생각했고, 이에 따라서 configure.ac 파일에 enable debug 옵션을 작성해 주면 빌드할 수 있다.

AC_ARG_ENABLE(debug,
              AC_HELP_STRING([--enable-debug], [enable debugging (default: yes)]),
              [CFLAGS="$CFLAGS -w -g -O1" CXXFLAGS="$CXXFLAGS -w -g -O1"],
              [CFLAGS="$CFLAGS -w -O3" CXXFLAGS="$CXXFLAGS -w -O3"])

참고

GNU 빌드 시스템 사용법 : https://airs.com/ian/configure/

 

The GNU configure and build system - Table of Contents

 

airs.com

kldp 위키 : http://wiki.kldp.org/wiki.php/DocbookSgml/Autotools-KLDP

 

'토막지식' 카테고리의 다른 글

WARNING : REMOTE HOST IDENTIFICATION HAS CHANGED  (0) 2020.12.15

댓글