@[nn] なかんじの *.dll を gcc/cygwin でコンパイル
某製品で公開されている AAA.lib, AAA.dll があって, 関数 FFF を呼び出す test.c を書いた.
gcc/cygwin でコンパイルしたいのだけどリンクがうまくいかないという状況.
$ gcc test.c -L. -lAAA test.o: test.c:(.text+0xbf): undefined reference to `_FFF` $ nm AAA.lib |grep FFF 00000000 T _FFF@24 00000000 I __imp__FFF@24 $ nm AAA.dll nm: AAA.dll: no symbols
@[nn] がダメな感じ. dlltools を使えばいいようなことが書いてるところをちらほらみつけたが, dll が "no symbol" ではない雰囲気. -D で AAA.lib を渡しても同じ.
$ echo EXPORTS > AAA.def $ nm AAA.lib | grep 'T _' | sed 's/^.* T _//' >> AAA.def $ dlltool -k -d AAA.def -D AAA.dll -l libAAA.a $ nm libAAA.a | grep FFF 00000000 T _FFF@24 00000000 I __imp__FFF@24 $ dlltool -k -d AAA.def -D AAA.lib -l libAAA.a $ nm libAAA.a | grep FFF 00000000 T _FFF@24 00000000 I __imp__FFF@24 $ gcc test.c libAAA.a test.o: test.c:(.text+0xbf): undefined reference to `_FFF`
@[nn] がなければコンパイルは通る.
$ echo EXPORTS > AAA.def $ nm AAA.lib | grep 'T _' | sed 's/^.* T _//' | sed 's/@.*$//' >> AAA.def $ dlltool -k -d AAA.def -D AAA.dll -l libBBB.a $ nm libBBB.a | grep FFF 00000000 T _FFF 00000000 I __imp__FFF $ gcc --mno-cygwin test.c -L. -lBBB
実行すると libBBB.a と AAA.dll の対応がとれてないから, "a.exe - エントリポイントがみつかりません".
公開されているヘッダファイルをみると(08/07追記),
#if hogehoge # define M_DECL __stdcall #else # define M_DECL #endif extern int M_DECL FFF();
hogehoge を定義すればいけた. 上記の dlltool とか不要...
$ cpp -dM /dev/null | grep stdcall #define _stdcall __attribute__((__stdcall__)) #define __stdcall __attribute__((__stdcall__))
参考URL
条件付き制御構造
以下の全ての \if...文は 対応する \fi で終了する 一般形 【\if...<条件><条件成立時の実行文>\else<条件不成立時の実行文>\fi】 ( \else<条件不成立時の実行文> 部分は省略出来る ) (p.207) \if--- \fi 構文の nesting は {...} の nesting とは独立 (p.209-210) 【\ifnum<整数1><関係><整数>】 2 整数の大小比較 関係は <,=,> の 3種 【\ifdim<実数1><関係><実数>】 2 単位附き実数の大小比較 関係は <,=,> の 3種 【例】 \ifdim \hsize>100pt ... \fi 【\ifodd<整数>】 整数が奇数かどうかの判定 【\ifvmode】 TeXが v-mode か internal v-mode にあるかどうかの判定 【\ifhmode】 TeXが h-mode か internal h-mode にあるかどうかの判定 【\ifmmode】 TeXが math-mode か display math-mode にあるかどうかの判定 【\ifinner】 TeXが internal v-mode, restricted h-mode, (nondisplay) math-mode の いずれかにあるかどうかの判定 【\ifhttp://www.is.titech.ac.jp/~mase/latex.hlp】 2つの token が同じ character code を持つかどうかの判定 (その際 category code の差は無視される) 【\ifcat 】 2つの token が同じ category code を持つかどうかの 判定(その際 character code の差は無視される) 関連命令 \noexpand 【\ifx 】 2つの token が同じかどうかの判定(成立条件は TeXbook Chap.20 p.210 を参照) 【\ifvoid<整数>】 整数に対応する box register が 空 かどうかの判定 【\ifhbox<整数>】 整数に対応する box register が hbox かどうかの判定 【\ifhvox<整数>】 整数に対応する box register が vbox かどうかの判定 【\ifhvox<整数>】 整数に対応する box register が vbox かどうかの判定 【\ifeof<整数>】 整数は 0-15. 整数に対応する入力ファイルが open されていないか, 又はファイルが読み終っているとき成立 【\iftrue】 必ず成立 【\iffalse】 必ず不成立 【\ifcase<整数> \or \or... \else \fi】(p.210) 条件分岐. 整数値 m が 0 から n 迄の時は textm が実行される それ以外は が実行される. \else 以下は無くてもよい 【\loop<実行文1><\if...<条件>><実行文2>\repeat】 (p.217) <\if...<条件>>部は \fi 無し まず<実行文1>を実行,次に<条件>成立なら<実行文2>を実行し,又<実行文1>に 戻る... 途中で<条件>が不成立になったらループから抜ける 【その他】 \newif (p.211)
OOoLatex
OOoLatex is a set of macros designed to bring the power of LaTeX into OpenOffice.
OOoLatex, get the power of LaTeX into OpenOffice !
OpenOffice 上で数式いれるのが楽になりますよマクロです.
install
http://ooolatex.sourceforge.net/
-> Download
-> OOoLatexMacro-v3.0 -> OOoLatexMacro-test5.tar.gz
% cd /tmp % tar xvzf OOoLatexMacro-test5.tar.gz % ls OOoLatexMacro-test5/ ChangeLog README bin/ macro-2.0/ # mv OOoLatexMacro-test5/ /usr/local (どこでも良い) % cp /usr/local/OOoLatexMacro-test5/bin/example.tex . % /usr/local/OOoLatexMacro-test5/bin/OOoLatex example.tex % ls example.* example.aux example.dvi example.out example.ps example.bbx example.log example.png example.tex
example.png ができていればとりあえずおけ.
Latex や ghostscript があらかじめインストールされている必要があるようですが, もともと入っていたので本当のところはわかりません.
OpenOffice から
マクロの登録
- メニューの[ツール(T)]->[マクロ(M)]->[マクロの管理(O)]->[OpenOffice.org Basic...]->
- [管理(O)...]ボタン->[ライブラリ]タブ->[インポート(I)...]ボタン-> "/usr/local/OOoLatexMacro-test5/macro-2.0/script.xlb" 選択 -> [OK]ボタン -> [閉じる]ボタン
- 左[マイマクロ]->左[OOoLatex]->左[OOoLatexEquation]->右[main]->[実行]ボタン -> "Cannot find (略)" -> "/usr/local/OOoLatexMacro-test5/bin" -> [save]ボタン
マクロの実行
- メニューの[ツール(T)]->[マクロ(M)]->[マクロを実行(U)...]
で, 入力した数式の画像が現れます. その数式を編集したい場合には選択した状態でマクロを実行する.
再編集(08/07/24)
もう一度数式オブジェクト?を選択しなおして OooLaTeX を実行すると編集できます.
が, OpenOffice を再起動すると編集できなくなりました. なので LaTeX のソースはどこかに残しておくほうがいいのかもしれません.
エラーメッセージ(08/07/24)
The selected object is not an OOoLatex equation... Please unselect it and call the macro again...
数式オブジェクト以外のものを選択して OooLaTeX を実行しているのが原因. 新規に作成したい場合にはどこも選択していない状態を作ってからマクロ再実行。再編集の場合には編集したい数式を選択してから再実行。
数式を選択していてもこのエラーがでるようなら、もう再編集は不可?
フォント
OpenOffice で資料を作成したらフォントがおかしいと指摘されたくりました.
私は見れればなんでも良い人間なので放置していたのですが, ちっと調べてみました.
MS フォント
◆MSゴシック
まぁ無理だろうと思っていたのですが、別件で検索していたらヒットしました。
http://www.ceres.dti.ne.jp/~yasukomi/thinkpad/linuxx22.htm
MS-Windows の Font ディレクトリから msgothic.ttc を
/usr/X11R6/lib/X11/fonts/TrueType/
にコピーし、同じディレクトリにある font.dir に以下のように書き加えて、頭の数字に書き
加えた行数を足し、Xを再起動すればOKです。
fonts.dir
(ここでは、msgothic.ttc を msgothic.ttf とリネームしています。)
c:\windows\fonts 配下にそれっぽいファイルがあります.
エクスプローラーでみると, 普段「名前」となっている列が「フォント名」になっていて, 「MS ゴシック&MS P ゴシック & MS UI Gohtic」 がファイル名 msgothic.ttc
% mkdir -p ~/.fonts/ms % cp msgothic.ttc ~/.fonts/ms/msgothic.ttf % fc-cache -fv
fc-cache すれば X の再起動は不要です.
これで使えるようになる感じですが, ライセンス上問題があるようなので他のフォントにいきます.
とりあえず削除しましょう.
% rm -fr ~/.fonts/ms % fc-cache -fv
IPA フォント
最近知ったんですが、IPAフォントなるものがあるんですね。独立行政法人情報処理推進機構が配布しているフォントで、無料で使えるみたいです。ライセンスはGPLではないですが、ざっと目を通したところ改変しなければ再配布も許可されるみたいですね。
http://blog.goo.ne.jp/heartbreaker-_-/e/7130400ad0aa72343e70738ae60e8831
こっちを入れてみます.
IPAexフォント/IPAフォント | IPAフォントのダウンロードサイトです からダウンロード.
% mkdir -p ~/.fonts % (cd ~/.fonts; unzip /..../IPAfont00203.zip) % fc-cache -fv
カーネルの再構築
カーネルを 2.6.25.6 にアップグレード/再構築してみました. 詳細はまた別途.
- 輝度調整できるようになった (spicctrl).
- wireless LAN が使えなくなった.
- hotkey は反応している感じがする.
- サスペンド、ハイバネーション ok
- 外部ディスプレイ出力 ok
無線LAN 以外はよさげな感じです.
追記 6/11
以下のエラーを出力して, ipw3945d がうごきませんでした.
対処できなかったので, 元に戻しました.
% modprobe ipw3945 Not starting ipw3945 regulatory daemon, driver not loaded.
nice/renice コマンド
存在は知っていたけど,
必要はなかったので使ったことがありませんでした.
% man nice nice(1) nice(1) 名前 nice - スケジュール優先度を変更してプログラムを実行する 書式 nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [arg...]] nice [--help] [--version] 説明 引数なしで実行すると、 nice は自身が継承したスケジューリング優先度を 表 示 する。それ以外の場合には、 nice はスケジューリング優先度を調整してか ら与えられた command を実行する。
とのことなのでやってみますと, 以下のようなエラー.
% echo $SHELL /bin/tcsh % nice -n 5 date nice: Badly formed number. % nice --help nice: Badly formed number. % which nice nice: shell build-in command. % renice usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]
tcsh の build-in なので nice(1) (** /usr/bin/nice) とは別物らしいです.
priority には +/- が必須.
bash なときは manpage に従えば良い.
% nice +5 date Mon Jun 9 17:00:00 JST 2008 % bash $ nice -n 5 date Mon Jun 9 17:00:00 JST 2008
その他
% top .... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 1944 644 552 S 0.0 0.1 0:01.12 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.20 ksoftirqd/0 3 root 10 -5 0 0 0 S 0.0 0.0 0:00.02 events/0 % ps -eo pid,ni,comm PID NI COMMAND 1 0 init 2 19 ksoftirqd/0 3 -5 events/0
NI が優先度の項目. nice の頭文字.
参考 URL
http://www.drk7.jp/MT/archives/001333.html
http://x68000.q-e-d.net/~68user/unix/pickup?nice
http://x68000.q-e-d.net/~68user/unix/pickup?renice
Google 先生に聞くときには nice より renice のほうが noise が少なくて良ろし.