ブログ

Armadillo-440:GTKのGUIサンプリアプリ(functester)を単独でビルドする

at_kazutaka.bito
2015年12月2日 11時37分

(2016.4.1更新)
GTKのGUIアプリを作ろうと思って、Armadillo-440のGUIサンプルアプリ"functester"を流用することを考えました。

参考)
ここでは、ATDE3での手順を説明してます。ATDE5での手順は下記を参考ください。
Armadillo-440:GTKのGUIサンプリアプリ(functester)を単独でビルドする(ATDE5版)

動作確認にあたって、ソースコードの ~/atmark-dist/vendors/AtmarkTechno/Armadillo-440/functester を単独でビルドできると便利なので、その方法を検討しましたところ、 Makefileの修正で実現できましたので、その方法を下記に説明します。 (ちなみに、functesterディレクトリ内で単にmakeするとエラーになります。)

ポイントは、下記の2点でした。

・コンパイラにarm-linux-gnueabi-gccを指定。
Armadillo実践開発ガイド第2部 6.1.2.1. プレフィックスより抜粋。

作業用PC上でARM向けにクロスコンパイルする際にはarm-linux-gnueabi-gccを使用します。
このコマンド名の前に付いているarm-linux-gnueabi-の部分を、プレフィックス(前頭詞)といいます。

・pkgconfigのパスの指定。
Armadillo実践開発ガイド第2部 図6.18 dispcsv2のためのMakefileより抜粋。

指定されたCROSS(=アーキテクチャ名)からPKGCONFIG_LIBDIRを作っています。
これが、目的のクロス環境pkgconfig情報があるパスになります。
このPKGCONFIG_LIBDIRが定義された状態でpkg-configコマンドを実行すると、
CFLAGS用のオプション(-I<dir>のヘッダファイルパス)や、LIBS(ライブラリ名)を教えてくれるのです。

1.任意のディレクトリにfunctesterをコピーする

(以降、functesterをホームディレクトリにコピーする場合で説明します。)

[atde ~]$ cp -r ~/atmark-dist/vendors/AtmarkTechno/Armadillo-440/functester ~/

2.コピーしたfunctesterディレクトリ内のMakefileを変更する

[atde ~]$ cd functester
[atde ~/functester]$  gedit Makefile

で、エディタでMakefileを開いて、

CFLAGS += $(shell pkg-config --cflags gtk+-2.0)
LDFLAGS += $(shell pkg-config --libs gtk+-2.0)
CFLAGS += -O2 -Wall

の箇所を

CROSS    := arm-linux-gnueabi

CROSS_PREFIX        := $(CROSS)-
PKGCONFIG_LIBDIR    := PKG_CONFIG_PATH=/usr/$(CROSS)/lib/pkgconfig

CC    = $(CROSS_PREFIX)gcc
CFLAGS += -O2 -Wall -Wextra -I../common

CFLAGS    += `$(PKGCONFIG_LIBDIR) pkg-config --cflags gtk+-2.0`
LDFLAGS += `$(PKGCONFIG_LIBDIR) pkg-config --libs gtk+-2.0`

に変更します。

CROSS := arm-linux-gnueabi
の箇所がコンパイラのプレフィックスの指定で、
PKGCONFIG_LIBDIR := PKG_CONFIG_PATH=/usr/$(CROSS)/lib/pkgconfig
の箇所がpkgconfigのパスの指定になっています。

上記の変更により、

[atde ~/functester]$ make

で、functesterが単独でビルドできました。