「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ
CALENDAR
2018年5月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
前月
翌月
Entry Archive
2024年12月
2024年11月
2024年10月
2024年09月
2024年08月
2024年07月
2024年06月
2024年05月
2024年04月
2024年03月
2024年02月
2024年01月
2023年12月
2023年11月
2023年10月
2023年09月
2023年08月
2023年07月
2023年06月
2023年05月
2023年04月
2023年03月
2023年02月
2023年01月
2022年12月
2022年11月
2022年10月
2022年09月
2022年08月
2022年07月
2022年06月
2022年05月
2022年04月
2022年03月
2022年02月
2022年01月
2021年12月
2021年11月
2021年10月
2021年09月
2021年08月
2021年07月
2021年06月
2021年05月
2021年04月
2021年03月
2021年02月
2021年01月
2020年12月
2020年11月
2020年10月
2020年09月
2020年08月
2020年07月
2020年06月
2020年05月
2020年04月
2020年03月
2020年02月
2020年01月
2019年12月
2019年11月
2019年10月
2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年04月
2019年03月
2019年02月
2019年01月
2018年12月
2018年11月
2018年10月
2018年09月
2018年08月
2018年07月
2018年06月
2018年05月
2018年04月
2018年03月
2018年02月
2018年01月
2017年12月
2017年11月
2017年10月
2017年09月
2017年08月
2017年07月
2017年06月
2017年05月
2017年04月
2017年03月
2017年02月
2017年01月
2016年12月
2016年11月
2016年10月
2016年09月
2016年08月
2016年07月
2016年06月
2016年05月
2016年04月
2016年03月
2016年02月
2016年01月
2015年12月
2015年11月
2015年10月
2015年09月
2015年08月
2015年07月
2015年06月
2015年05月
2015年04月
2015年03月
2015年02月
2015年01月
2014年12月
2014年11月
2014年10月
2014年09月
2014年08月
2014年07月
2014年06月
2014年05月
2014年04月
2014年03月
2014年02月
2014年01月
2013年12月
2013年11月
2013年10月
2013年09月
2013年08月
2013年07月
2013年06月
2013年05月
2013年04月
2013年03月
2013年02月
2013年01月
2012年12月
2012年11月
2012年10月
2012年09月
2012年08月
2012年07月
2012年06月
2012年05月
2012年04月
2012年03月
2012年02月
2012年01月
2011年12月
2011年11月
2011年10月
2011年09月
2011年08月
2011年07月
2011年06月
2011年05月
2011年04月
2011年03月
2011年02月
2011年01月
2010年12月
2010年11月
2010年10月
2010年09月
2010年08月
2010年07月
2010年06月
2010年05月
2010年04月
2010年03月
2010年02月
2010年01月
2009年12月
2009年11月
2009年10月
2009年09月
2009年08月
2009年07月
2009年06月
2009年05月
2009年04月
2009年03月
2009年02月
2009年01月
2008年12月
2008年11月
2008年10月
2008年09月
2008年08月
2008年07月
2008年06月
2008年05月
2008年04月
2008年03月
2008年02月
2008年01月
2007年12月
2007年11月
Recent Entry
振り返り2024
こないだのロボット
ロボット行ってきた
追加で中古ソフト買ってきた
こないだのロボット
ロボット行ってきた
レトロコンボ2グリーンを9Vで試す
SFCのラインヘッドネジ
こないだのロボット
ロボット行ってきた
Recent Comment
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan0/
レジ袋ホルダーを考える
フルタニアン/
レジ袋ホルダーを考える
Category
ノンジャンル
(2863)
PIC
(47)
AVR
(341)
Arduino
(446)
Raspberry Pi
(194)
mbed
(41)
ARM
(30)
ESP32
(15)
Android
(10)
OPアンプ
(125)
VHDL
(57)
PSoC
(4)
アナログ回路
(110)
クルマ
(127)
rails
(51)
本
(42)
導電塗料
(3)
Fritzing
(41)
Edison
(2)
FFT
(34)
写真
(158)
MIDI
(24)
その他日記
(11)
Python
(57)
3Dプリンタ
(124)
Bookmark
最初はgoo
goo blogトップ
スタッフブログ
My Profile
ブログID
nekosan0
自己紹介
Search
このブログ内で
ウェブ全て
HSP3 for LinuxをLinux Mintにインストール
ノンジャンル
/
2018年05月02日
Linux Mintに、HSP3 for Linuxを入れてみた。参考にした
のは、昨日の
https://www.youtube.com/watch?v=9dAF2ZB93no
この動画。Ubuntuに、CLIでインストールしている様子を
解説した動画なんだけど、Linux Mintを使いつつ、せっかく
のGUI用開発言語なので、GUI環境メインでインストールする
手順を、まとめておきたいところ。
http://hsp.tv/make/hsp3linux_pi.html
公式ページに、ソースファイルが一式詰まったtgzファイルと、
インストールが必要な各種パッケージについて触れられて
いるものの、各OS環境でそれらのパッケージをどういう風に
インストールすればいいかが触れられて無いので、そのへん
をメインに、ハードコピーで流れを纏めていきます。
・HSP3のソースを含むアーカイブをダウンロード/解凍
・必要なパッケージ類をインストール
・ソースをmake(コンパイル)
→各種HSP3のユティリティ(実行ファイル)生成
・HSP3のプログラムを書いてコンパイルして実行
という感じの流れになります。
ソースアーカイブファイルのダウンロードは後まわし
にしておいて、とりあえず先に、必要となる3つの
パッケージ、
「OpenGLES2.0以降 / EGL」
「SDL1.2」
「gtk+-2」
をインストールしていきます。
MintのGUI環境なので、パッケージマネージャはsynaptic
を使って「楽をしていく」方向です。
なので、GUI画面でsynapticを開いて、それぞれ以下の
ようにキーワード検索使って、パッケージの一覧を表示
して、対象のパッケージにチェック入れてインストール
していってください。
(UbuntuとかDebianでも同じ感じだとおもうんだけど、
synapticは標準で入ってないかもしれないので、
その場合はsynaptic入れて楽するか、以下のハード
コピーを参考に、各パッケージの名前を直接入力して
ください)
まず、OpenGL関係。
てっきり、Openって付くし、いろんなソフトで使ってるわけ
だから、OpenGLなんて最初から入っているんじゃないの?
無償で使えるライブラリなんでしょ?とか思ってたら、
少し違うみたい。
http://www.robot.t.u-tokyo.ac.jp/~yamashita/html/gllinux.html
http://baker-street.jugem.jp/?eid=526
このあたりで説明されているように、グラフィックドライバ
周りって、ハード依存で、各社GPUベンダー系のオープンじゃ
ないドライバが絡むので、オープンソース版にあたる「mesa」
っていうのを使うみたい。
Raspberry Pi版だと、GPUはCPUチップ内蔵だったりするから、
その辺は少し違うみたいなんだけど、とりあえずPC Linux
なら、mesaがらみのOpenGLを入れておくとシアワセっぽい。
(OpenGLとほぼ互換の、似て非なるものというものらしい)
というわけで、synapticでこれをインストールしていきます。
検索窓で、「libgles2-mesa」って入力してみると、
「libgles2-mesa-dev」っていうパッケージがあるので、
これにチェック(インストール対象に選択)して
インストールます。
libgles2-mesaは、
https://packages.debian.org/ja/wheezy/libgles2-mesa
こういうパッケージ。
ちなみに、後ろに「dev」って入っているのは、開発用の
パッケージのことで、各種ヘッダファイルなどが入って
います。
後の手順で、「make」でコンパイルをするときに、この
パッケージとかに収録されているヘッダファイルを使って
コンパイルするので、そのときに必要になります。
(詳しくは後ほど)
つぎ。SDLを入れていきます。SDLは、
https://ja.wikipedia.org/wiki/SDL
こういうパッケージ。要は、グラフィックとかサウンド
とかを扱うための、マルチプラットホームの便利な
ライブラリ。
同様に、「libsdl」って入力すると、「libsdl1.2-dev」
ってパッケージが見つかるので、こいつをチェックして
インストールします。
あと、参考にした動画では、「libsdl-image1.2-dev」と
「libsdl-mixer1.2-dev」もインストールしないと動かな
かったとあったので、一覧から探してみると、Mint環境
もデフォルトではインストールされてないみたいなので、
一緒に入れておきます。
前者は画像フォーマットを扱う関係のライブラリ、後者は
オーディオミキサー関係のライブラリ。
つづいて、gtk2.0関係をインストールします。
https://ja.wikipedia.org/wiki/GTK%2B
gtk2.0は、gimpとかで使われている、マルチプラット
ホームのツールキットなので、モノ自体は標準で
インストールしてあるんだけど、devパッケージは
インストールされていないので、インストールします。
検索窓で、libgtk2.0と入れると、「libgtk2.0-dev」が
あるので、これをインストールします。
パッケージのインストール関係はとりあえず終了。
で、ようやく、公式ページからソース一式が入った
アーカイブファイルをダウンロードして、コンパイル
していきます。
まず、ブラウザ(Mintだと標準でfirefox)で公式ページ
を開いて、tgzファイルをクリックしてダウンロードします。
ダウンロード先ディレクトリは、「Downloads」あたりで
いいでしょう。
(本当は、FHSに倣って/optに入れておくとかしたほうが
いいと思いますが)
今回ダウンロードしたファイルは、「hsplinux35.tgz」
でした。バージョンによって数値部分が変わるみたい
です。
これを、ファイルマネージャで開いて、右クリックして
「ここに展開」すると、「hsplinux35」っていう
ディレクトリが作られて、その中にソースなどファイル
一式が解凍されます。
解凍できたら、そのディレクトリに移って、余白部分
(ファイルのアイコンが無いところ)で右クリック
すると、「端末の中に開く」があるので、これを
選ぶと、この「hsplinux35」ディレクトリをワーキング
ディレクトリにした状態で、端末(黒い画面)が
開きます。
(makeの作業だけは、GUI環境だけで出来ないので、
端末使います)
黒い画面で、「hsplinux35」ディレクトリが開きました。
おもむろに、「make」と打ってエンターを押すと、
アーカイブに入っていた「makefile」にしたがって、
ソースファイル一式のコンパイル作業が始まります。
makeについては、くわしい説明は端折りますが、
以下を眺めてみると良いでしょう。
http://www.atmarkit.co.jp/ait/articles/1106/07/news131.html
http://www.atmarkit.co.jp/ait/articles/1106/10/news115.html
ざっくり言うと、
・たくさんのソースファイルから成るプログラムを
コンパイルして、それぞれのソースにプログラムに
対するオブジェクトファイルを作る
・それらの各オブジェクトをリンクして、実行ファイル
を作る
・その際、変更のあったソースファイルを見つけ出して、
それだけをコンパイルしなおして、新しいオブジェクト
を生成し、実行ファイルに反映させる
・逆に、変更の無いソースファイルやオブジェクトは、
そのまま再利用されることで、コンパイル全体の時間
を短くできる
という動作をします。
こういう作業は、意外なほど大変なので、コンパイル
~リンク~実行ファイル生成の手順を自動化するのが
makeとかmakefileの用途です。
「make」コマンドだけ打つと、「makefile」を探して、
そこに書かれた内容を元に、どのソースとどのソース
を使って、どんな風にコンパイルすれば良いかを解釈
して、最終的に実行ファイルを出力します。
「makefile」は、ダウンロードしたhsp3のtgzファイル
にも収録されていて、そのmakefileを元にコンパイル
が行われます。
なお、「make」は、パラメタを指定すると、「makefile」
内にその名前で書かれた処理(ターゲットという)を明示
されたとして、makefileのそのセクションの処理を
実行します。(このあたりは、次のエラーの話でちょっと
だけ必要)
さて、32ビット版のLinux OSなら、多分ここでコンパイル
は終了だったでしょう。
残念ながら、エラーが出て、makeが中断しました。
エラーメッセージを調べてみると、どうやら、32ビット
のオブジェクトファイルと64ビットのオブジェクトファイル
が混在しているようで、「変数の型が一致しないよ」と
いう内容のエラーが出ているようです。
調べてみると、
http://transitive.info/2013/01/15/gimp-djvu-plugin/
ここに似たような事例がありました。どうやら、ダウン
ロードしたtgzファイル内に、ソースだけではなく、
コンパイルが完了しているオブジェクトファイルが
一部混在しているようで、オイラの64ビット版Mint
でコンパイルして出力されたオブジェクトと、混在
していた32ビット版用のオブジェクトで、型が一致
しないことがエラーになっていたようです。
このページでは、「make distclean」を行えと書いて
あります。この「distclean」がさっきの「ターゲット」
というわけです。
やってみたところ、「distclean」というターゲット
が無いよ、とのことなので、一般的なmakefileで
記述される「clean」を指定してみると、うまいこと
古いオブジェクトファイルが一掃されたようです。
64ビット版のLinuxを使っていて、同様のエラーが
出た場合は、「make clean」とやってみてください。
32ビット版の混在したオブジェクトが消えたので、
改めて「make」でコンパイルしなおします。
Windows10機の「VMware」環境上(1コア、1GB RAM)の
環境で、およそ5分でコンパイルが終わりました。
ネイティブ環境なら、もっと早いでしょう。
正常にコンパイルが通ると、先ほどのディレクトリに、
「hsed」とか「hspcmp」とか、「hsp3dish」といった
ファイルが増えているはずです。
「hsed」は、hsp用の簡易テキストエディタで、ファイル
を開いたり、実行したりできます。
(インタプリタなのか、JITコンパイラなのか不明ですが、
「F5」キーを押すだけで実行可能)
「hspcmp」は、実行用のオブジェクトを生成するコマンド
で、これを使って実行ファイルを作ります。ただし、
この実行ファイルは単体では動かず、「hsp3dish」と
いうランタイムに引き渡して実行します。
具体的には、
「./hspcmp -d -i -u test.hsp」でコンパイルして、
「test.ax」というオブジェクトが生成されたら、
「./hsp3disp test.ax」とすると、hsp3dishランタイム
を使って実行されるようです。「hsp3dish」のほかにも、
コマンドライン用の「hsp3cl」や、HGIMG4ランタイム用
の「hsp3gp」などがあるようです。詳しくは公式ページ
を参照のこと。
まぁ、とりあえず動作できる環境を作るというのが
目的だったので、コンパイルはまだやってません。
hsed上に、サンプルプログラムを読み込んで、直接実行
してみました。
先ほどmakeで生成された「hsed」を右クリックして
「開く」でテキストエディタの画面が開きます。
そうしたら、「file」メニューから「open」で、
「sample」ディレクトリから適当なプログラムファイル
を開いてみます。(ダイアログに[save」って書いて
ありますが、多分バグでしょう)
ここでは、「test1.hsp」を開いてみました。
「hsp→run」か、「F5キー」で実行します。
こんな感じの画面が出て、マウスを動かすと、その座標
が数値表示されて、ビットマップ画像がぐるぐると
回転しています。
とりあえず、HSPのソースを入力すると、実行できる
環境が整ったと思います。
(とりあえず、全然読み直して無いので、もしかしたら
内容がおかしいところいっぱいあるかも)
ただ、いくつかのdevパッケージ入れたせいなのか、
なんかVMware上のMint、OS起動中にXサーバーの起動で
失敗しちゃう状態に。ただいま格闘中。
なんか、セグメントフォールト起きてるみたいなんだよな。
なにやら、開発中の変なパッケージとか入っちゃった
のかなぁ?
(追記)
Xサーバー起動、復活できた。
「エラーログ見る?」みたいなダイアログ出てきたんだけど、
見ても意味わかんないので、exitでそっと閉じていくと、
コマンドラインに戻るので、こういうときはあわてず騒がず、
ひとまず
「sudo apt-get update」して「sudo apt-get upgrade」
だろうと。
やってみたら、立ち上がるようになった。
よかった。よかった。
その他、色々いじってみて、ちょっと知らなかったことなどを
少し整理してまとめておきたいと思います。
(1)Ubuntuのパッケージマネージャ
UbuntuのGUIデスクトップ(Unity)がなじまなかった
ので、最近はMintばかり使っているので、最新のUbuntu
はGUIのパッケージマネージャ、何使ってるんだろう?
と思ったら、
https://ja.wikipedia.org/wiki/Snappy
https://kledgeb.blogspot.jp/2016/06/ubuntu-1604-71-snaplinux.html
snappyってうやつなの?なんか先進的な感じがするねぇ。
Debian系も、Redhat系も、ほかのディストリビューション
でも、なんでもカバーできそう。いずれはこれに集約
されていったりするの?
(2)apt-fileでパッケージの検索
今回みたいに、なにかソースのアーカイブファイルを
ダウンロードして来て、コンパイルして使うっていう
場合に、特定のパッケージが入ってなかったりした
場合、必要なパッケージをどうやって探せばいいの?
と思ったので、ちょっと調べてみた。
https://qiita.com/Yuichirou/items/38165af29ab1e2d307f6
http://blog.amedama.jp/entry/2016/05/29/160545
ほほう。なんか、こんな感じに、「apt-file」を使って、
どのパッケージにどんなファイルが収録されているかが
検索できるってわけなのね。
とりあえず、apt-fileをインストールしておくかな。
コメント (
0
)
goo ブログ
ブログの作成・編集
gooおすすめリンク
おすすめブログ
【集まれ!野鳥ブロガー】あなたのブログを紹介しませんか?
@goo_blog
【お知らせ】
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
【集まれ!野鳥ブロガー】あなたのブログを紹介しませんか?
訪問者数に応じてdポイント最大1,000pt当たる!
dポイントが当たる!無料『毎日くじ』