Armadilloフォーラム

ATDE7でのgtkプログラムのコンパイル

s.sato

2020年3月4日 14時57分

お世話になっております。

Armadillo-640(LCDオプション付き)でgtkを使用するアプリケーションを、ATDE7環境で作成しています。
おそらくgtkライブラリ設定の関係でコンパイルがうまくできていません。

■ 環境
ATDE7 : atde7-i386-20190703.tar.xz をダウンロードして利用
Makefile(アップロードのため拡張子.txtを追加しています)を添付いたします。

■ 背景
以前Armadillo-440向けに同アプリケーションをATDE5環境でコンパイルしていました。
これをArmadillo-640向けに、ATDE7環境でコンパイルしようとしています。

■ 現象

ATDE5使用時は、添付Makefileを利用してコンパイルし、うまく行っていましたが、
ATDE7では以下のようなメッセージが出てコンパイルできません。

  arm-linux-gnueabihf-gcc -O2 -Wall -Wextra -I../common `PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig:/usr/arm-linux-gnueabihf/share/pkgconfig pkg-config --cflags gtk+-2.0` -c -o tchart.o tchart.c
/bin/sh: 1: pkg-config: not found
tchart.c:4:21: fatal error: gtk/gtk.h: そのようなファイルやディレクトリはありません
 #include <gtk/gtk.h>
                     ^
compilation terminated.
Makefile:38: ターゲット 'tchart.o' のレシピで失敗しました
make: *** [tchart.o] エラー 1

このためまずはpkg-configを使用できるように

sudo apt-get install pkg-config

を行い、再度makeを行いました。今度は以下のようなメッセージとなります。

  arm-linux-gnueabihf-gcc -O2 -Wall -Wextra -I../common `PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig:/usr/arm-linux-gnueabihf/share/pkgconfig pkg-config --cflags gtk+-2.0` -c -o tchart.o tchart.c
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
tchart.c:4:21: fatal error: gtk/gtk.h: そのようなファイルやディレクトリはありません
 #include <gtk/gtk.h>
                     ^
compilation terminated.
Makefile:38: ターゲット 'tchart.o' のレシピで失敗しました
make: *** [tchart.o] エラー 1

gtk+-2.0.pcがないようですが、入れ方がよくわからないので、とりあえずネットの情報を元に

sudo apt-get install libgtk2.0-dev

を実施しました。

====================================================
★ちなみにgtk+-2.0.pcは私のATDE5環境では
/usr/arm-linux-gnueabihf/lib/pkgconfig/gtk+-2.0.pc
/usr/arm-linux-gnueabi/lib/pkgconfig/gtk+-2.0.pc
あたりにあるようですが、これがデフォルトのATDE5に入っていたかどうかは、すみませんが定かではありません。
また上記はATDE7環境には存在しないようです。
====================================================

その後、再度makeした結果が以下となります。

  arm-linux-gnueabihf-gcc -O2 -Wall -Wextra -I../common `PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig:/usr/arm-linux-gnueabihf/share/pkgconfig pkg-config --cflags gtk+-2.0` -c -o tchart.o tchart.c
 
tchart.c: In function ‘cb_button_clicked’:
  (中略)
tchart.c:332:13: warning: variable ‘gain’ set but not used [-Wunused-but-set-variable]
   float fs, gain;
             ^~~~
  arm-linux-gnueabihf-gcc -O2 -Wall -Wextra -I../common `PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig:/usr/arm-linux-gnueabihf/share/pkgconfig pkg-config --cflags gtk+-2.0` `PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig:/usr/arm-linux-gnueabihf/share/pkgconfig pkg-config --libs gtk+-2.0` -o tchart lib/TS_IData.o tchart.o
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lgtk-x11-2.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lgdk-x11-2.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lpangocairo-1.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -latk-1.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lcairo が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lgdk_pixbuf-2.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lgio-2.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lpangoft2-1.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lpango-1.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lgobject-2.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lglib-2.0 が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lfontconfig が見つかりません
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lfreetype が見つかりません
collect2: error: ld returned 1 exit status
Makefile:33: ターゲット 'tchart' のレシピで失敗しました
make: *** [tchart] エラー 1

試行錯誤で

sudo apt-get install libgtk2.0-dev:armhf

を行い、再makeしても

  arm-linux-gnueabihf-gcc -O2 -Wall -Wextra -I../common `PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig:/usr/arm-linux-gnueabihf/share/pkgconfig pkg-config --cflags gtk+-2.0` -c -o tchart.o tchart.c
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
tchart.c:4:21: fatal error: gtk/gtk.h: そのようなファイルやディレクトリはありません
 #include <gtk/gtk.h>
                     ^
compilation terminated.
Makefile:38: ターゲット 'tchart.o' のレシピで失敗しました
make: *** [tchart.o] エラー 1

のようなメッセージとなります。
何か良いアドバイス等ありましたら、ご教授いただけると幸いです。

ファイル ファイルの説明
Makefile.txt
コメント

佐藤です。

>

> sudo apt-get install pkg-config
> 

>

以下を試してもらえますでしょうか。

sudo apt-get install pkg-config:armhf

としてみて、Makefile 内で pkg-config している個所を、arm-linux-gnueabihf-pkg-config に変更し、$(PKGCONFIG_LIBDIR) は削除する。

佐藤様

早速ご回答いただきありがとうございます。

いただいた方法を行いましたところ、うまく行きました。
今回も大変早く解決することができました。
ありがとうございます。

今後ともどうぞよろしくお願いいたします。