Windows/Linux クロス開発環境構築 その1
ひでのふは主に Windows 上で動くプログラムを作る仕事をしているわけですが
このたび Linux 上でがっちょりプログラムを作るプロジェクトが降ってきました。

で、Windows は無料でヴィジュアルでインテグレィテッドフルな開発環境があったり
するように、Linux でも Eclipse で似たような開発環境が用意できます。

しかし、メインで使っているぱすこんは Windows なので、
そのまま Linux の Eclipse を使うことができません。
まさか開発のためだけに X Window を立ち上げるわけにも行きませんし。
かといって、Linux には telnet かなんかでログインして、
vi と gcc でゴリゴリやるなんて前時代的な開発手法を使うつもりは全くありません。

とゆーことで、こんな開発環境を考えてみました。

eclipse.jpg





Windows 上で Eclipse を立ち上げ、Linux 側で動くプログラムの開発を行います。
一言で言うならば、クロス開発環境の構築です。

今回の場合は...

 ▼ Windows 側をホスト(HOST)と呼びます。
 ▼ Linux 側をターゲット(TARGET)と呼びます。


いろいろネット上の情報も参考にしてあれこれやってはみたのですが
情報が古かったり、もっと便利なものが出てきたりしているので
自分であれこれ試してみたことを書き記して行きます。

全部で10回の連載を予定しています。

注意: MinGW/Cygwin 上で動く linux-i386 用 gcc を MinGW/Cygwin 上で作るのは
止めておいたほうがいいです。

一連のエントリ執筆に際し、特に参考になったサイト:
【連載記事「生産性向上への道 Eclipseで行うC/C++開発」】
http://monoist.atmarkit.co.jp/fembedded/index/eclipseccplusplus.html

【2011/06/04】 クロス開発環境 | トラックバック(0) | コメント(0) | page top↑
Windows/Linux クロス開発環境構築 その2 HOST側アプリのインスコ
さて、クロス開発環境構築にあたり、それぞれ以下のものをインスコします。
実際に使用した、各アプリのバージョンも記載してあります。

まずは HOST 側からです。

▼ HOST 側【Windows】
→ Eclipse(3.6.1 Herios SR1)
 ・特に気にしなければ、Pleiades を使うほうがよいでしょう。
 C/C++ の Full all in one がお勧めです。
 ・もしくは、eclipse.org のホームページから「downloads」を開き
Eclipse IDE for C/C++ Developers」をダウンロードしインスコしてください。

 ・上記のパッケージは C/C++ 開発に必要なプラグインも含まれています。
 ・インスコが終わったら、忘れずに「ヘルプ」→「更新の確認」で
 最新の環境にアゲておきましょう。
 ・Eclipse をインスコしたフォルダにある、eclipse.ini に
 以下の1行を追記しておいてください。
 通常 TARGET 側が UTF-8 環境のはずなので、この一行を追記しておかないと
 Eclipse のコンソールで文字化けが出ることになります。

-Dfile.encoding=utf-8



→ MinGW
 ・SourceForge からダウンロードしインスコしてください。
 ・トップページの緑色の「download」と書かれたボタンからダウンロードします。
 ・ここでダウンロードされるのはネット経由のインストーラーです。
 よって、常に最新版がインスコされることになります。
 ・32bit 版でも 64bit アプリのビルドとデヴァッグが可能です。
 ・msys も含まれています。別途ダウンロードする必要はありません。
 ・一連のエントリで、MinGW は C:\MinGW フォルダにインスコされていることを
 前提にしています。
 ・DOSプロンプトから以下のコマンドを実行し、
 make と gdb が起動することを確認します。

c:\MinGW\bin>mingw32-make.exe
mingw32-make.exe: *** No targets specified and no makefile found. Stop.

c:\MinGW\bin>gdb
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.


→ WinSCP(4.3.2)
 ・ここからダウンロードし、インスコしてください。


【2011/06/05】 クロス開発環境 | トラックバック(0) | コメント(0) | page top↑
Windows/Linux クロス開発環境構築 その3 TARGET側アプリのインスコ
次は TARGET 側のアプリのインスコです。
ちなみに TARGET 側の Linux は以下のバージョンを使用しています。

CentOS release 5.5 (Final)
Linux 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 GNU/Linux


▼ TARGET側【Linux】
→ gcc(3.4.6)
 ・開発機に最初からインスコされていた gcc をそのまま使用。

→ gdbserver(7.2)
 ・これは開発機に含まれていなかったので、ここからソースを取得し、
 ビルドしてインスコ。
 ・インスコが終わったら、下記のコマンドを投入して PATH を通しておきます。

# PATH="$PATH":/usr/src/debug/gdb-7.2/gdb:/usr/src/debug/gdb-7.2/gdb/gdbserver
# export PATH


 ・下記のコマンド投入し、gdbserver が起動することを確認します。

# gdbserver --version

GNU gdbserver (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
gdbserver is free software, covered by the GNU General Public License.
This gdbserver was configured as "i686-pc-linux-gnu"


 ・最後に忘れずに .bashrc にも PATH を通すスクリプトを追記しておきましょう。

PATH="$PATH":/usr/src/debug/gdb-7.2/gdb:/usr/src/debug/gdb-7.2/gdb/gdbserver



→ RSE(3.0.3)
 ・開発機に最初からインスコされていた rseserver をそのまま使用。
 ・ただこれは少し古いので、気になるようなら最新版をダウンロードしてインスコ。
 ・RSE は perl スクリプトから java を起動しているので、それらが動作する
 環境が必須。
 ・.bachrc に下記のスクリプトを追記し、自動で立ち上がるようにする。

LSOF=`lsof -i:4075`
if [ "$LSOF" = "" ]; then
cd /opt/rseserver
perl ./daemon.pl 4075 10000-10010 &
cd ~/.
fi



TARGET 側では、これらのアプリのインスコに加え、
SSH と以下のポートを開いておく必要があります。

#gdbserver
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 2345 -j ACCEPT
#RSE server
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 4075 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 10000:10010 -j ACCEPT


上記の内容を /etc/sysconfig/iptables にでも追加して下さい。

【2011/06/06】 クロス開発環境 | トラックバック(0) | コメント(0) | page top↑
Windows/Linux クロス開発環境構築 その4 WinSCP の設定
最近の Linux のディストリビューションは、telnet とか FTP とかのサーヴィスが
立ち上がっていません。
もちろん立ち上げてもよいのですが、それはセキュリティ上好ましくない場合が
往々にしてあり得ます。

そこで、最近は telnet や FTP の代わりとして SSH を使用するわけですが
WinSCP は、フリーの SSH クライアントの一つとなります。

WinSCP はファイルの移動やリモートシェルの起動でとても世話になる神ツールです。

メニューから WinSCP を起動します。
有効なホスト名、ユーザ名、パスワードを入力してログインしてください。
秘密鍵は不要です。

winscp_login.jpg








ターゲット側にてデフォルトで備わっているサーバ証明書を受け入れるかどうか
聞かれますので、サクッと受け入れちゃってください。
接続先が誤っていないと言う自信があれば、問題ありません。

うまく接続できたら、すかさず「セッション」→「セッションを保存」で
セッションを保存してください。

winscp_sesssave.jpg








このときパスワードは保存してください。(推奨されませんがw)

これで次回からログインするときは「保存したセッション」から
ログインできるようになります。

セッションを保存した後、Language で 日本語から英語に切り替えて下さい。
これをしておかないと Eclipse のコンソール画面で文字化けが出ます。
まあ常に同じメッセージが出力されるので、
文字化けが気にならなければ日本語のままでも問題はないでしょう。



【2011/06/07】 クロス開発環境 | トラックバック(0) | コメント(0) | page top↑
Windows/Linux クロス開発環境構築 その5 RSEの設定
次はせっかくなので RSE のインスコにチャレンジします。
RSE をインスコすると Eclipse から TARGET に対し

 ▼ ファイル操作
 ▼ プロセス操作
 ▼ リモートシェル起動
 ▼ ターミナル起動


とまあ、TARGET 側に対して必要と思われる操作が行えるようになるのですが
正直 WinSCP があるので不要です。

それでも Eclipse と統合されているほうが使い勝手がよいという人もいると
思いますので、設定方法を書いて行きたいと思います。

まずは、パースペクティブを「リモートシステムエクスプローラー」に切り替えます。
リモートシステムエクスプローラーへの切り替えは、
最初に「ウィンドウ」→「パースペクティブを開く」→「その他」と進み

eclipse_parspective.jpg








「リモートシステムエクスプローラー」を選択します。

eclipse_parspective2.jpg











次に、リモートシステムのビューで右クリックし、新規接続を選択します。

rse_new.jpg











リモートシステムタイプで「Linux」を選択して「次へ」

rse_new1.jpg










リモートシステム接続(Linux)で、有効なホスト名と接続名を入力し「完了」
ホスト名は名前解決できるホスト名を指定する必要があります。

TARGET のサーバ名と接続名が一致しないと繋がりません。
「ホスト名」が正しい接続先になっていても弾かれます。
この場合でも、SSH だけを指定して繋ぐ分には繋がります。
TARGET のサーバ名は SSH で TARGET 側に接続し、
次のコマンドを入力して確認して下さい。

echo $HOSTNAME


rse_new2.jpg











設定が終了すると、このようなツリーが表示されるはずです。

rse_new3.jpg












設定が出来たらつないでみましょう。

まずは SSH のターミナルで TARGET 側と接続します。

rse_ssh_connect.jpg









.bashrc で rseserver が自動的に立ち上がるようになっていない場合は
以下のコマンド入力して rserserver を立ち上げてやりましょう。

cd /opt/rseserver/3.0.3/
perl ./daemon.pl 4075 10000-10010 &
cd ~/.


次にシェルをつなぎます。
まずはシェルのプロパティで「サーバー・ランチャー設定」が
「リモート・デーモン」で「デーモン・ポート」が 4075 であることを確認します。
(デフォルトでこの設定になっているはずです)

rse_shell_connect_property.jpg









設定が確認できたら SSH の時と同じように接続します。(少し時間がかかります)

上手く接続できれば、すべてのアイコンに緑の矢印がつきます。
接続できれば、リモートシステムのビューからターゲットのファイルを eclipse 上で
編集したり、プロセスの停止や起動ができるようになります。

rse_shell_connect.jpg










「接続名」は、プロパティの赤枠の箇所を確認して下さい。
「ホスト名」の方は IP アドレスでも名前解決できるサーバ名でもかまいません。

rse_property.jpg









ログインユーザは root でもかまいませんが、他のユーザで接続することが可能です。
ただし、rseserver は root 権限がないと起動することはできません。

接続に失敗しても、気を取り直してもう一度繋げなおすと
繋がることがよくありますw
一旦繋いでしまえば、突然切れてしまうようなことはないようです。

【2011/06/08】 クロス開発環境 | トラックバック(0) | コメント(0) | page top↑
| ホーム | OLD