2005年度メカトロニクス演習:ノートPCプログラミング(1)

  • 担当:稲邑哲也講師
  • 日時:2005年10月4日,火曜3限

本日の配布資料

本日の演習スケジュール

  • ウィルスバスターのユーザ登録設定
  • Windows環境変数の設定
  • Xkeymacs のインストール
  • Meadow の設定
  • cygwin の設定
  • Makefile の復習
  • ライブラリの構築の演習

課題6のヒント

  • ファイル名は以下の物を使うようにすると上手く行く.
    lab ディレクトリ以下にて
    g++ -shared -o liblab.dll lab.o
    ar cq lab.a lab.o
    として,二つのファイルを生成する.次に,app ディレクトリで,
    g++ -L../lab -o main_dll.exe main.o -llab
    として動的ライブラリのリンクを行い,
    g++ -o main_a.exe main.o ../lab/lab.a
    として静的ライブラリのリンクを行う.

動的ライブラリをリンクした実行ファイルを実行するためには, LD_LIBRARY_PATH に,動的ライブラリが登録されていなければならない. 今回のサンプル .bashrc のうち,

export LD_LIBRARY_PATH=/usr/X11R6/bin

の部分を,

export LD_LIBRARY_PATH=/usr/X11R6/bin:/usr/local/lib/

という具合にして編集し,

cp lab/liblab.dll /usr/local/lib/

として,コピーしておくと良い. LD_LIBRARY_PATHの編集結果を適用するには,Meadow のbash のバッファを一旦削除し,再び M-x shell で bash を立ち上げると良い.


訂正

cygwin講習/cygwinコマンド

(誤)ln -s "`cygpath -dH`/Master/My Documents" MyDocuments
(正)ln -s "`cygpath -dH`/root/My Documents" MyDocuments

コンパイラの動作確認

C:\cygwin\home\work の下に notepc_sample_inamura.tgz をダウンロード
cd ~/work
tar zxvf notepc_sample_inamura.tgz
java の確認
  cd ~/work/test/java/
  javac HelloWorld.java
  java HelloWorld
gcc の確認
  cd ~/work/test/gcc/
  gcc -o HelloWorld.exe HelloWorld.c
  ./HelloWorld

(上記の注意:notepc_sample_inamura.tgz の拡張子が, tgz ではなく,tar になる場合がありますが,その場合にはtar を展開して下さい)



.bashrc の例

export PAGER=less
export JLESSCHARSET=japanese-sjis
export LD_LIBRARY_PATH=/usr/X11R6/bin:/usr/local/lib
export PATH=/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS/system32/wbem
export PATH=$PATH:/cygdrive/c/jdk1.3.1_09/bin:/usr/local/bin
export PATH=/usr/bin:$PATH:$LD_LIBRARY_PATH
export SHELL=C:/cygwin/bin/bash
export DISPLAY=localhost:0.0

alias ls="ls -aFh --color=auto --show-control-char"
alias rm="rm -i"

Meadowの設定ファイル

はじめに

".emacs" ファイルに日本語など ASCII 以外の文字を書く場合、".emacs" ファイルは iso-2022-7bit で保存しておきます。 Shift_JIS や EUC-JP で保存されていると、Meadow 起動時に文字符号化方式を自動判別できないからです。 文字コードの変更は,M-x set-buffer-file-coding-systemを打ってから,iso-2022-7bitと打てばOKです.

また,Meadowを使う際に以下のことを実行すると効率的なプログラミングを行うことができるようになる.

TABキーを押すことで,ファイル選択やコマンド入力の際に補完作業を行う. AltIMEやxkeymacsなどのツールを使って,キーバインドを変更する. 具体的には,左ControlキーとCaps lockキーを交換するのが望ましい. その理由は,ここを参考にしてもらいたい


サンプル設定

;;; 日本語環境設定
(set-language-environment "Japanese")

;;; IMEの設定
(mw32-ime-initialize)
(setq default-input-method "MW32-IME")
(setq-default mw32-ime-mode-line-state-indicator "[--]")
(setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
(add-hook 'mw32-ime-on-hook
	  (function (lambda () (set-cursor-height 2))))
(add-hook 'mw32-ime-off-hook
	  (function (lambda () (set-cursor-height 4)))) 
;;; C-hでBackSpace
(keyboard-translate ?\C-h ?\C-?)

;;; M-x g goto-line
;;; デバックをする際にこれがあると便利である
(define-key esc-map "g" 'goto-line)

;;; Cygwinのbashを使う場合
(setq explicit-shell-file-name "bash.exe")
(setq shell-file-name "sh.exe")
(setq shell-command-switch "-c")
(add-hook 'shell-mode-hook
           (lambda ()
		  (set-buffer-process-coding-system 'japanese-shift-jis-unix
						    'japanese-shift-jis-unix)))

色のつけ方

色のつけ方には,他のemacsの設定と同じで2通りの方法があります.

各bufferでコマンドを打つ .emacsファイルに書く

ことによって,色をつけることができます. 色をつけることでデバックがやりやすくなったり,ファイル自体が 見やすくなったりするので,ぜひemacsに色をつけてください.

コマンド入力

M-x global-font-lock-mode  

と入力する. .emacsファイルで設定

(global-font-lock-mode t)  

文字のフォント

文字のフォントは,以下の内容を.emacsに書き込むことで変更できる. 自分の好みで文字の大きさなどを変更するとよい.

(create-fontset-from-request "private-fontset"
			     '((width . 8)
			       (height . 16)
			       (fixed . t)
			       (italic . nil))
			     '((family . "MS ゴシック")
			       (family . "Courier New")))
 

ウインドウの設定

ウインドウの色やサイズは,以下の内容を.emacsに書き込むことで設定できる. 自分の環境に最適なウインドウ設定を行うべきである.

(setq default-frame-alist
      (append (list '(foreground-color . "black")
		    '(background-color . "LemonChiffon")
		    '(border-color . "black")
		    '(mouse-color . "white")
		    '(cursor-color . "black")
		    '(width . 60)
		    '(height . 40)
		    '(font . "private-fontset")
		    )
	      default-frame-alist))

Meadow からの cygwin の shell の立ち上げ

Maedow 上で,

M-x shell

と打ち込むと,普通の Cygwin の画面と 同様のコマンドプロンプトが Maedow に表示されることが分る. あとは通常と同じようにコマンドを打ち込み,実行することができる. このモードを「shellモード」と呼ぶ.shellモードの利点は, プログラムの実行結果やデバッグ文等のメッセージ表示が, エディタ上に残るので,その部分をコピーペーストして レポートを作成したり,メールで転送したりするなどの作業が 容易にできる点である.

;;; Cygwin の bash を使う場合
(setq explicit-shell-file-name "bash.exe")
(setq shell-file-name "sh.exe")
(setq shell-command-switch "-c") 
(add-hook 'shell-mode-hook
          (lambda ()
	    (set-buffer-process-coding-system 'japanese-shift-jis-unix
					      'japanese-shift-jis-unix)))

.emacsファイル

以上の設定を踏まえた.emacsファイルは以下のようになる. 説明していない部分については,適当に聞いてもらいたい.

;;; 色をつける.
(global-font-lock-mode t) 

;;; 日本語環境設定
(set-language-environment "Japanese")

;;; IMEの設定
(mw32-ime-initialize)
(setq default-input-method "MW32-IME")
(setq-default mw32-ime-mode-line-state-indicator "[--]")
(setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
(add-hook 'mw32-ime-on-hook
	  (function (lambda () (set-cursor-height 2))))
(add-hook 'mw32-ime-off-hook
	  (function (lambda () (set-cursor-height 4)))) 

;;; C-hでBackSpace
(keyboard-translate ?\C-h ?\C-?)

;;; M-x g goto-line
;;; デバックをする際にこれがあると便利である
(define-key esc-map "g" 'goto-line)

;;; Cygwinのbashを使う場合
(setq explicit-shell-file-name "bash.exe")
(setq shell-file-name "sh.exe")
(setq shell-command-switch "-c")
(add-hook 'shell-mode-hook
           (lambda ()
		  (set-buffer-process-coding-system 'japanese-shift-jis-unix
						    'japanese-shift-jis-unix)))

(display-time)
(auto-compression-mode t)
;;; 文字の設定
(create-fontset-from-request "private-fontset"
			     '((width . 8)
			       (height . 16)
			       (fixed . t)
			       (italic . nil))
			     '((family . "MS ゴシック")
			       (family . "Courier New")))
  
;;; ウインドウの設定
(setq default-frame-alist
      (append (list '(foreground-color . "black")
		    '(background-color . "LemonChiffon")
		    '(border-color . "black")
		    '(mouse-color . "white")
		    '(cursor-color . "black")
		    '(width . 60)
		    '(height . 40)
		    '(font . "private-fontset")
		    )
	      default-frame-alist))

;;; shell-clear (by ogura)
;;; shellでC-lしたとき,すべて消えるように.
(defun shell-clear()
  "In shell-mode,clear all display and move cursor top of the buffer."
  (interactive)
  (recenter 0))
(eval-after-load "shell"
  '(define-key shell-mode-map "\C-l" 'shell-clear))

;;shell-modeでlsしたとき色を表示
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

おまけ

emacsキーバインドを覚えてemacsを使いこなそう!!

基本の基本:

C-hBackSpace?
C-ddelete
C-f
C-b
C-n
C-p
C-vPageDown?

基本:

C-a行頭に移る
C-e行端に移る
C-gEsc
C-/Undo
C-gemacsコマンドのキャンセル

応用(コピペ):

C-spaceカーソルの場所をマークする
C-wCut
C-yペースト
C-k行端までをCut

応用(ファイル操作):

C-x C-fファイルを開く
C-x C-sファイルを保存
C-x C-wファイルを別名で保存

慣れると,マウスでGUIを操作するより10倍早く操作できる!

応用(ウィンドウ操作):

C-x 2ウィンドウを二つに分ける
C-x 1ウィンドウを一つに戻す
C-x oウィンドウの移動

応用(置換):

Esc-%置換(y = yes, n = no)

質問は稲邑(inamura.gif )まで.

講義・演習?


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Tue, 04 Oct 2005 17:30:22 JST (1589d)