home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

911 - 920 / 1320    [|<]  [|<]  [<]  91  92  93  94  95  96  97  98  99  100   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術/Linux/localeメモ msakamoto-sf 2009-11-18 12:42:39
C言語系/memos/pkg-config msakamoto-sf 2009-11-18 11:41:42
日記/2009/11/18/自覚していた以上にdeepにmentalがbreakしてたみたい。 msakamoto-sf 2009-11-18 02:56:06
C言語系/memos/libtool msakamoto-sf 2009-11-18 01:17:46
C言語系/memos/automake msakamoto-sf 2009-11-18 00:01:34
C言語系/memos/autoconf msakamoto-sf 2009-11-17 22:17:23
日記/2009/11/16/autoconf,automake,libtoolsのチュートリアル本さがしてるのだけど・・・ msakamoto-sf 2009-11-16 22:37:14
C言語系/memos/gmake msakamoto-sf 2009-11-16 18:29:26
技術/vim/vimrc msakamoto-sf 2009-11-16 14:18:52
日記/2009/11/15/「作りながら学ぶOSカーネル」読了・・・一応。 msakamoto-sf 2009-11-16 13:47:26
ソート項目 / ソート順     1ページ 件ずつ表示

技術/Linux/localeメモ  

所有者: msakamoto-sf    作成日: 2009-11-18 12:41:02
カテゴリ: C言語 Linux プログラミング 

Linux locale の自分用メモ

出典:

locale名(ロカール名), カテゴリ

ロカール名の構造:

language[_territory][.codeset][@modifier]
language 言語名 : ISO 639 で定義された言語コードの小文字(2文字)
territory 国家名 or 地域名 : ISO 3166 で定義された国/地域コード大文字2文字
codeset IANA定義の文字コード名
modifier 任意の修飾子

※プログラムの起動時は常に"C"or"POSIX"ロカールとなっている。変更するにはsetlocale(3)を呼ぶ必要がある。"POSIX"ロカールは"C"ロカールと同じで、基本的に英語のみ使用可能なロカールである。
なお省略や別名定義が行われている場合もあり、"ja_JP.UTF-8"なら"ja_JP", "ja.UTF-8", "ja", さらには"japanese"ロカールが準備されている場合もある。

カテゴリ:通常は環境変数として、"LC_XXYY=ja_JP.UTF-8"のように設定する。

LC_CTYPE
文字の分類/比較/変換の方法、および文字の解釈と表現の方法。
正規表現のマッチング、文字の分類、文字の変換、大文字小文字比較、ワイド文字関数に影響する。
LC_COLLATE
文字の照合方法や整列方法の規定。文字の大小関係や、合字の取り扱いを規定する。
正規表現のマッチング (範囲表現と等価クラスのマッチングを決定する) と文字列の照合 (collation) に影響する。
LC_MESSAGES
メッセージの表示に利用する言語。地域化可能な自然言語メッセージを規定する。
LC_MONETARY
通貨の書式を規定する。小数点の区切りやカンマの位置, 通貨記号など。
LC_NUMERIC
数値の書式(小数点や 3 桁ごとの区切り)
LC_TIME
時刻と日付けの書式(strftime(3)に影響)
LC_ALL
上記の全て。

ロカール定義情報の確認 : localeコマンドで確認できる。

$ locale -a # 現在システムにインストールされているロカールの一覧
C
POSIX
aa_DJ
aa_DJ.iso88591
...
$ locale -m # 利用可能な文字コードの一覧
ANSI_X3.110-1983
ANSI_X3.4-1968
...
# 幾つかのキーを指定して取得
$ LC_ALL=zh_CN.UTF8 locale -k yesexpr day
yesexpr="^[yY是]"
day="星期日;星期一;星期二;星期三;星期四;星期五;星期六"

$ LC_ALL=en_US locale -k yesexpr day
yesexpr="^[yY].*"
day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday"

$ LC_ALL=ja_JP.UTF8 locale -k yesexpr day
yesexpr="^([yYyY]|はい|ハイ)"
day="日曜日;月曜日;火曜日;水曜日;木曜日;金曜日;土曜日"

setlocale()の使い方メモ

基本:

char *setlocale(int category, const char *locale);

全てのカテゴリで"ja_JP.UTF-8"を設定:

setlocale(LC_ALL, "ja_JP.UTF-8");

ロカール名は環境変数から取得:

setlocale(LC_ALL, "");

現在のロカール名を取得:

char *current = NULL;
current = setlocale(LC_CTYPE, NULL);

ロカール名を環境変数から取得する場合、具体的にどの環境変数を検査するのかは実装依存となる。
glibcの場合は以下の順序で環境変数を検査し、最初に見つかった値を使う。

  1. LC_ALL環境変数
  2. LC_TIME, LC_NUMERICなど指定されたcategoryと同じ名前
  3. LANG環境変数

ロカール名として不正であれば、setlocale()はNULLを返す。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-18 12:42:39
md5:7e028e0980ba74d8657710695ab04e7c
sha1:ec8d393c022a4c6e0e0d35cf593e290f27856bea

C言語系/memos/pkg-config  

所有者: msakamoto-sf    作成日: 2009-11-18 11:39:34
カテゴリ: C言語 

pkg-configの自分用メモ

概要

ライブラリなどのパッケージ毎に、インストール先やコンパイル/リンクオプションを定義したメタデータファイルを用意しておき、

$ gcc -c `pkg-config --cflags gtk+-2.0` -o foo.o foo.c
$ gcc `pkg-config --lflags gtk+-2.0` -o gtktest foo.o

のように組み込む事で、コンパイルオプションやリンクオプションを展開してくれる開発ツールである。
対応するメタデータファイルは、"パッケージ名" + ".pc"となり、上の例だと"gtk+-2.0.pc"が後述のメタデータファイル読み込みディレクトリに存在する必要がある。

単独で使用してみるとどう展開されるかが確認できる。

$ pkg-config --cflags gtk+-2.0
-I/usr/include/gtk-2.0 \
# ここからは/usr/lib/pkgconfig/gtk+-2.0.pc で定義されている
# 依存パッケージを辿って出力される"-I"オプション
-I/usr/lib/gtk-2.0/include \
-I/usr/include/atk-1.0 \
(...)
-I/usr/include/libpng12
$ pkg-config --libs gtk+-2.0
-L/lib \
-lgtk-x11-2.0 \
# ここからは/usr/lib/pkgconfig/gtk+-2.0.pc で定義されている
# 依存パッケージを辿って出力される"-l"オプション
-lgdk-x11-2.0 \
(...)
-lglib-2.0

他:

パッケージのバージョン取得:
$ pkg-config --modversion libssl
0.9.8b

最小バージョンのチェック(プロセス終了時の戻り値で判別):
$ pkg-config --atleast-version 0.9.7 libssl
$ echo $?
0

$ pkg-config --atleast-version 0.9.9 libssl
$ echo $?
1

バージョンの正確な一致チェック(プロセス終了時の戻り値で判別):
$ pkg-config --exact-version 0.9.8 libssl
$ echo $?
1

$ pkg-config --exact-version 0.9.8b libssl
$ echo $?
0

最大バージョンのチェック(プロセス終了時の戻り値で判別):
$ pkg-config --max-version 0.9.10 libssl
$ echo $?
0

$ pkg-config --max-version 0.9.7 libssl
$ echo $?
1

構成とメタデータファイルの置き場所

CentOS 5.2, pkgconfig-0.21 の構成:

$ rpm -ql pkgconfig
/usr/bin/pkg-config
/usr/lib/pkgconfig
/usr/share/aclocal/pkg.m4
/usr/share/man/man1/pkg-config.1.gz
/usr/share/pkgconfig

シンプルな構成になっている。"*.pc"ファイルは次のディレクトリから検索される。

/usr/lib/pkgconfig
/usr/share/pkgconfig

なおこの2ディレクトリは、pkg-configをコンパイル・インストールする時のオプションによって変わる。上記値はあくまでもCentOS 5.2におけるpkgconfigの値である。

PKG_CONFIG_PATH環境変数が設定されている場合は、先にPKG_CONFIG_PATHを検索した後、上記2ディレクトリを検索する。
PKG_CONFIG_PATHに複数ディレクトリを設定する場合は、UNIX系なら":"(カンマ), Windowsなら";"(セミコロン)で区切る。

Autoconf/Makefile.amへの組み込み

configure.acに、次のm4マクロを組み込む。

PKG_CHECK_MODULES(VARIABLE-PREFIX,MODULES[,ACTION-IF-FOUND,[ACTION-IF-NOT-FOUND]])
→ MYSTUFF_LIBS と MYSTUFF_CFLAGS にそれぞれ "--libs", "--cflags" の展開値がセットされる。

例:

PKG_CHECK_MODULES([MYSTUFF], [gtk+-2.0 >= 1.3.5 libxml = 1.8.4])
...
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.0.0, have_gtk=yes, AC_MSG_ERROR(Cannot find GTK+ 2.0))
echo "have_gtk=$have_gtk"
...

Makefile.amに組み込む時は、"***_LIBS", "***_CFLAGS"を使えば良い。
configure.ac :

PKG_CHECK_MODULES(GTK, ...)

Makefile.am :

bin_PROGRAMS = gtktest
gtktest_SOURCES = gtktest.c

gtktest_LDADD = @GTK_LIBS@
gtktest_CFLAGS = @GTK_CFLAGS@

※"XXYY_CFLAGS"を追加すると "Makefile.am: required file `config/compile' not found" というエラーになった場合は、"automake -a -c"すると良い。"compile"サポートスクリプトがコピーされ、Makefile.inも正常に生成される。

なお単純にpkg-configプログラムの存在チェックだけを行いたい場合は、次のm4マクロをconfigure.acに組み込む。

PKG_PROG_PKG_CONFIG([MIN-VERSION])

メタデータファイルの生成

ライブラリのパッケージなどを開発しており、pkg-configサポートとして独自のメタデータファイルを作成したい場合はAutoconfを利用すると良い。
具体的には、メタデータファイル名を"libfoo.pc"とすれば、configure.acのAC_CONFIG_FILESに"libfoo.pc"を追加し、

AC_CONFIG_FILES(Makefile)
↓
AC_CONFIG_FILES(Makefile libfoo.pc)

さらに"libfoo.pc.in"ファイルを準備する。libfoo.pc.in ファイル中ではMakefile.inと同様の"@変数名@"が利用できる。
これにより、"./configure"コマンドによりMakefileと同様にlibfoo.pcファイルも生成され、"@変数名@"は適切に置換される。

このようにしておけば、ファイルのインストール先や各種オプションがメタデータファイルに適切に同期される。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-18 11:41:42
md5:34207b16a94e46a15e68504da72c7695
sha1:206ee3b729a01f18761477b9359aa8e7ecae9f57

日記/2009/11/18/自覚していた以上にdeepにmentalがbreakしてたみたい。  

所有者: msakamoto-sf    作成日: 2009-11-18 02:36:23
カテゴリ:

数日前の話になるが、先週の金曜日、近くのメンタルクリニックに行って診てもらってきた。

いろいろ症状とか不安感だとか喋ってるうちに、ふと子供の頃からずーっと意識せずになんとなく行ってきたクセについて話した。どういうクセかというと、外を歩いている時、自分のすぐ前・後ろの電柱だとか、ガードレールだとか、扉とか建物の角とか、そうした「区切り」点みたいなところで、目の前の両側の区切り点を結ぶ「線」を意識してしまって、それを「意識して踏みつけるか、またぐ」ように歩いているクセ。
うーん非常に文章にしずらいのだけれど、とにかく、外を歩いている時間の半分くらいは「あ、この線を踏み越えたら次はあそことあの電柱を結ぶ線を」が延々と意識の底で処理され続けている。

もっとも人と話している時とか、深く考え事をしていたりする時、ぼーっと歩いているだけの時などは全く意識しないし、室内でも意識されない。

・・・てなことを喋ったら。
「強迫神経症か鬱病で診断書作成しましょうか?」
とか言われた。・・・え・・・適応障害じゃなくて・・・?
「あなたの場合、ご自身で思っている以上に本来攻撃的というか、アグレッシブな性質があるんですが、それをかなり押さえ込んで今まで生活してきてるようです。」
・・・!お、思い当たる節が・・・ありすぎる・・・!!
自覚している以上に、「~でなければならない」でがんじがらめにしていたっぽい。

実はその時は話さなかったのだけれど、これに加えて自分はかなり深爪をしている。普通の爪切りではなくて、プラモデルを作ったりする時に使うニッパーという工具でかなり深めに爪を切ってる。
・・・のみならず、実は、指先の薄皮もニッパーで「剥いで」たりします・・・。
いや、お風呂入った後とか、指先ふやけて皮膚とか白くなって盛り上がるじゃないですか。
そこを、ぱちぱちとニッパーで「毟り取る」、んで、ほんのり赤い薄皮だけになるとようやく「ほっ」とするわけです。

・・・こ、これもかー!!!

というか、歩くクセにせよ、深爪を通り越して指先の皮を剥く行為にせよ、小学校高学年の時点で既に日常になっていたんですが・・・!!

いや、なんというか。うん・・・無理してたんだね、自分。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-18 02:56:06
md5:56514f05e4dc318ac83164e80f508314
sha1:e732a3bf50264dba765438904c0c1f91e52ea0a5

C言語系/memos/libtool  

所有者: msakamoto-sf    作成日: 2009-11-18 01:15:51
カテゴリ: C言語 

GNU Libtoolの自分用メモ

Libtoolは共有ライブラリに関する処理(compile/link/install, etc...)をエレガントに行えるようになっている。

  • "libtool"コマンドによる単独でのcompile/link/installの実行
  • "libtoolize"コマンドとm4マクロによる、automake/autoconfとの連携

"libtool"コマンド単体での利用

コンパイル : 非PIC版がカレントディレクトリに、PIC版が".libs/"以下に生成される。

$ libtool --mode=compile gcc -c foo.c -o foo.lo

(foo.lo はlibtoolが扱うメタデータ用テキストファイル)

ライブラリの作成 : ".libs/"以下に静的ライブラリ(*.a)と共有ライブラリ(*.so)の両方が作成される。

$ libtool --mode=link gcc -o libfoo.la foo.lo -rpath /usr/lib

(libfoo.la はlibtoolが扱うメタデータ用テキストファイル, "-rpath"は共有ライブラリの生成指示であり、同時に共有ライブラリのインストール先を指定している)

実行可能形式の作成 : カレントディレクトリに作成されるのはラッパースクリプトで、実際のバイナリは".libs/"以下に生成される。

$ libtool --mode=compile gcc -c main.c -o main.lo
$ libtool --mode=link gcc -o main main.lo -L. -lfoo

インストール : 実際のバイナリのコピー、ライブラリのシンボリックリンクの生成などが行われる。

$ libtool --mode=install install -m644 libfoo.la /install/path
$ libtool --mode=install install -m755 main /install/path
$ libtool --finish ("-rpath"に指定したディレクトリ) # optional, ldconfigの実行など

生成したファイルの削除 :

$ libtool --mode=clean rm -f *.lo *.la main

バージョン番号

"link"モードで "-version-info" オプションにより指定する。

$ libtool --mode=link ... -version-info <current>:<revision>:<age>
current
インターフェイス番号(インターフェイスが変わる時にインクリメント)
revision
実装バージョン(インターフェイスが変わらない限り、ここが増えていく)
age
サポートする過去のインターフェイス番号の範囲で、current - age までの値のインターフェイス番号がサポートされる。

soファイルのバージョン番号は、次のように若干組み替え・並び替えてつけられる。

libXXYY.so.(<current>-<age>).<age>.<revision>

例:

$ libtool --mode=link ... -version-info 3:2:0
→ libXXYY.so.3.0.2
$ libtool --mode=link ... -version-info 3:2:1
→ libXXYY.so.2.1.2

"<current> - <age>"となる理由は、サポートするバージョン番号の範囲の最小を指定する為である。"3:2:1"なら、バージョン番号2でも動作する。ということは、libXXYY.so.2.x.x というファイル名でも動く必要がある。このような事情で、".so"に続く1番目のメジャー番号は"<current>-<age>"となっている。

Autoconf/Makefile.amへの組み込み

configure.acが用意されている状態を前提とする。

Autoconfへの組み込み:

  1. "libtoolize -c"でサポートスクリプトを追加する。(configure.acでAC_CONFIG_AUX_DIRが指定されていれば、指定されたディレクトリに追加される)
  2. configure.acに AC_PROG_LIBTOOL マクロを追加する。
  3. "aclocal"を実行する。これによりaclocal.m4にLibtool提供のm4マクロが組み込まれ、AC_PROG_LIBTOOLなどが実行可能となる。

Makefile.amへの組み込み:

  • 実行可能形式にLibtoolライブラリをリンクするには、LDADD接尾辞にLibtoolライブラリを指定する。
  • Libtoolライブラリをビルド対象とするには、LIBRARIESではなくLTLIBRARIESを利用する。
  • "-version-info"は、LDFLAGS接尾辞に指定する。"-rpath"はAutmake側でよしなに設定してくれる為設定無用。

例:

bin_PROGRAMS = testmain
testmain_SOURCES = main.c
testmain_LDADD = libfoo.la

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.c
libfoo_la_LDFLAGS = -version-info 3:2:0

以下、GNU Libtool HTMLドキュメントでの主な見出しをポイントしておく。(見出しの番号については2009/11時点のものなので、将来変更される可能性がある)

  • "libtool"コマンド単体の機能やオプションを知りたい
    • "3 Using libtool", "4 Invoking libtool" 参照
  • Makefile.amへの組み込み方の詳細を知りたい
    • "5 Integrating libtool with your package" → "5.3 Using Automake with libtool" 参照
  • "libtoolize"コマンドの詳細やサポートスクリプトについて知りたい
    • "5.5 Including libtool in your package" 参照
  • Libtoolのバージョン番号の考え方の詳細を知りたい
    • "7 Library interface versions" 参照


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-18 01:17:46
md5:8e8d51decf8d3b78513497a1843d2349
sha1:97e9c2661d4735ee9c6478fd0fbdaa42daec45c0

C言語系/memos/automake  

所有者: msakamoto-sf    作成日: 2009-11-17 23:59:32
カテゴリ: C言語 

GNU Automakeの自分用メモ

Automakeは基本的には以下の2大機能を提供する。

  1. Makefile.am+configure.ac → automake実行 → Makefile.in生成
  2. aclocal実行 → configure.acで使われているマクロを aclocal.m4 に集約

基本的な流れとしては以下の順序になる。

  1. configure.acの準備と、AM_INIT_AUTOMAKEマクロの組み込み
  2. AM_INIT_AUTOMAKEを使えるようにする為、"aclocal"を実行してaclocal.m4を生成
  3. Makefile.amの準備
  4. automake実行

automakeはconfigure.acを読み込んでm4マクロを実行するが、Automakeが提供するm4マクロはそのままでは見つからないので実行できない。そこで、aclocalにより、configure.ac中で出てくる(Autoconf以外の)外部マクロをaclocal.m4に集約する。これにより、Automakeの提供するm4マクロはaclocal.m4に含まれる事になり、automakeにより実行可能となる。
なおautomake実行時にINSTALL, COPYINGの2ファイルが存在しないと"not found"エラーになる。そういう場合は、

automake -a -c

とすることでとりあえず自動的に用意する事ができる。他の"README"や"NEWS"などは手動で用意する必要がある。
また、"install-sh"なども自動的に追加されるようになるが、そうしたサポートスクリプトを追加するディレクトリを分けたい場合は、configure.acに

AC_CONFIG_AUX_DIR(ディレクトリ名)

と、AM_INIT_AUTOMAKEの前に指定する。

※なおGNU Automake HTMLドキュメントには、「aclocalは本来はAutoconfの機能に含まれるべきなので、将来的にはAutomakeからは無くなるかも」という記述がある。

以下、GNU Automake HTMLドキュメントでの主な見出しをポイントしておく。(見出しの番号については2009/11時点のものなので、将来変更される可能性がある)

  • Makefileの提供するターゲットや機能を知りたい
    • "2.2 Use Cases for the GNU Build System" 以下参照
  • Automake, Makefile.amのサンプを読みたい
    • "2.4 A Small Hello World", "4 Some example packages" 参照
  • aclocalの詳細や、m4マクロの検索の詳細を知りたい
    • "6.3 Auto-generating aclocal.m4" 参照
  • サブディレクトリを使う時のHowToを知りたい
    • "7 Directories", "7.1 Recursing subdirectories" 参照
  • Makefile.amで指定できる機能の詳細を知りたい
    • "8 Building Programs and Libraries", "8.1 Building a program", "8.2 Building a library", "8.3 Building a Shared Library" 参照


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-18 00:01:34
md5:86d9541918b03df45f6e83e552de5af3
sha1:2001eed88feb3bf642d1a0c1787703a91b50e68f

C言語系/memos/autoconf  

所有者: msakamoto-sf    作成日: 2009-11-17 22:09:03
カテゴリ: C言語 

GNU Autoconfの自分用メモ

以下はGNU Autoconf HTMLドキュメントより抜粋したファイル関連図。"*"付がコマンド実行、"[]"囲みはオプショナルファイル or コマンド実行を表す。

step1 : autoscan実行からconfigure.acの準備まで

your source files --> [autoscan*] --> [configure.scan] --> configure.ac

step2 : configure.ac, Makefile.in の準備から autoconf/autoheaderの実行, configureスクリプトの生成まで

configure.ac --.
               |   .------> autoconf* -----> configure
[aclocal.m4] --+---+
               |   `-----> [autoheader*] --> [config.h.in]
[acsite.m4] ---'

Makefile.in -------------------------------> Makefile.in

※aclocalはGNU Automakeに含まれるツールなので、当メモでは取り上げない

step3 : configureスクリプトの生成以降

                       .-------------> [config.cache]
configure* ------------+-------------> config.log
                       |
[config.h.in] -.       v            .-> [config.h] -.
               +--> config.status* -+               +--> make*
Makefile.in ---'                    `-> Makefile ---'
(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-17 22:17:23
md5:44e648f6a15e86990949ade5b9c5b7ef
sha1:311245cf508746e9b6bfea7da0f3000325e7a3c5

日記/2009/11/16/autoconf,automake,libtoolsのチュートリアル本さがしてるのだけど・・・  

所有者: msakamoto-sf    作成日: 2009-11-16 22:24:46
カテゴリ: C言語 Linux プログラミング 

autoconf/automake/libtoolsのチュートリアルor解説本を探している。

これがそうかな?と思ったのだけれど・・・
GNU Autoconf/Automake/Libtool
カスタマーレビューが良くない。amazon.comの方で原著である
GNU Autoconf, Automake, and Libtool (Circle)
を見てみると、amazon.co.jp側と同様なカスタマーレビューが載っていた。原著のレベルで、あまり評判がよろしくないのかもしれない。

じゃあこっちかな、と見てみたが・・・
Autotools: A Developer's Guide to Gnu Autoconf, Automake, and Libtool
2009/11/28発売、ということで予約待ちになっている。発売後、amazon.com側のカスタマーレビューを確認してから購入是非を考えても遅くはない。

amazon.com側も見て回ったのだけれど、中々autoconfなどのautotools系のガイド本が少ないようだ。

実は自分は以下の本を読み始めているのだが、意外と良書かも知れない。autoconf/automake/libtoolsについても、簡単ながらもチュートリアル形式で使い方のイロハが書かれていて、ちょうどこれから読み進める所だ。

まずはこっちを読み切ってからでも良いかもしれない。もともとPHPのconfigure周りを把握したいだけなので、細かいhowtoやcaseを突っ込んで知りたいわけではない。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-16 22:37:14
md5:1cb18b04c3d4a52b7ed2838a37a89f20
sha1:a6f7d4b3e8df247650990060cd56ccf58690ce68

C言語系/memos/gmake  

所有者: msakamoto-sf    作成日: 2009-11-16 18:25:55
カテゴリ: C言語 

GNU make コマンドの使い方を自分用にメモしておく。
なお、十人十色に書かれた「Makefileの書き方」ドキュメントが既に広くWeb上に存在する。
従ってこちらのメモでは、Makefileの細かい部分までメモする事はなく、あくまでも自分用のざっくりとしたリファレンスとして書き付けておく。

特に記述がない場合はCentOS 5.2 の GNU Make 3.81 のmanページを元にしている。その他のUNIX環境やWindowsのmakeについてはそれぞれ独自の機能拡張、あるいはGNU Makeにのみ実装されている機能、などがあると思うので、特に自動定義の変数や拡張子(SUFFIXES)に応じた事前定義のルールについてはそれぞれの環境で、都度manやドキュメントを調べる必要がある。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-16 18:29:26
md5:dc57771650a7026e25af34169e44f1dc
sha1:9c21ed8a00838cf58dc8e8b2f32ef729934cbbbc

技術/vim/vimrc  

所有者: msakamoto-sf    作成日: 2009-01-18 19:58:46
カテゴリ:

Linuxで使用可能な .vimrc. 人から貰った。

文字コードの自動判定辺りは、

周りから引き継がれた模様。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 4
更新者: msakamoto-sf
更新日: 2009-11-16 14:18:52
md5:8b9341eb36bc6fd129b8163ccc8f9409
sha1:32c1daa712ae19ee2325b4f8842c08e86011fde3

日記/2009/11/15/「作りながら学ぶOSカーネル」読了・・・一応。  

所有者: msakamoto-sf    作成日: 2009-11-15 04:20:04
カテゴリ: Assembler 

ようやく読み終わりました。

アセンブラや、C言語とアセンブラの連携は何となく分かる・・・その上で、OSやカーネルに興味があるけどそもそもx86アーキテクチャを知らない・・・という自分には丁度良い入門書だったと思います。

ただ不満点というか・・・個人的に理解しきれなかったというか。

  • 7章のタスク切り替え以降、一つのサンプルコードの実行に必要なコード量が増えると共に、1-6章までの機能を詰め込んだ形になってきたため、コード理解がきつかった。というか理解しきれなかった。
  • サンプルコードが動かない?7章と9章で、サポートサイトからDLしたオリジナルのコードですら、動かなかった。正確に言えばユーザープロセスとして動作するはずのコードが動いていないっぽい。ブートコードやタイマー割り込みのコードなどは動いている。

1-4,5章くらいまでは、x86の機能を一つずつ取り上げて、「小さなコードでサンプル実行」→「あ、なるほど~」と理解できました。しかし7章になって、1-6章までの機能+7章でのタスクスイッチングの機能の全部入りのソースコードになってしまい、追いづらく+弄りづらく+デバッグしづらくなってしまいました。7章以降はタスクスイッチングやページングなど重めの機能を取り上げている事もあるので、どうしてもサンプルコードが複雑になるのは仕方ないとは思うのですが、もうちょっと「小さく作って実験→理解してから大きく作る」という流れは維持できなかったかなぁ~とその点が残念です、というか理解しきれなかった自分が悔しいなぁと。

ただ、こちらの本を併せて読めば、↑で理解しきれない部分もとりあえず図入りで解説されていたりします。まさに「あわせて読む」で効果が実感できた本です。

こちらのサンプルコードは、MS-DOS時代のものなので今や動かせません。ただし「作りながら学ぶ~」の方は9章を除く全てがアセンブラで書かれているのに対し、こちらはアセンブラとCの混在、ということで、C言語の部分は若干読みやすく・理解しやすくなっているように思われました。動かす事はできませんが、「あ、『作りながら学ぶ~』で全部アセンブラで書かれていたところが、こっちの本ではこんな風にアセンブラとC言語に分けて書いてあるんだな~」という読み方をして楽しむ事はできると思います。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-16 13:47:26
md5:ffe549aa82b921dff1372419103c65a9
sha1:f095e6d57f9b94a0ccc40ffc2e2cd546009cc203