目次: C言語とlibc
昨日の日記の繰り返しになりますが、私がやりたいのは、変なオプション付けてglibcをビルドすることです。
いきなりやると大抵うまくいかないので、初めに何も付けずにビルドしました。簡単な修正が必要ですが、特に問題なく成功しました。
あとはオプション変えるだけだと思ったら、やっぱダメでした。下のメッセージのように、最適化を外すなって怒られます。
$ make (...snip...) /tmp/build/glibc-2.3.2/config.h:3:3: #error "glibc cannot be compiled without optimization"
そういえば以前、hdk氏より「Linuxカーネル(12/18訂正:カーネル -> Linuxカーネル)は最適化をoffにするとコンパイルできない」と教えてもらたっけなあ。
今日になって同じような現象に出会うとは、夢にも思いませんでしたよ。
まずapt-get source glibcとして、取ってきたglibc_2.3.2.ds1.orig.tar.gzを展開すると、glibc-2.3.2.tar.bz2とglibc-linuxthreads-2.3.2.tar.bz2が出てくるので、それらを展開します。
そして、Zaurus Cross さんにあるglibc-2.3.2向けのバグフィクスパッチを当てます。
こういう素晴らしいお仕事してくれる方がいるから、ほんと助かります…。
# ソース取ってくる
$ apt-get source glibc
$ tar -xzvf glibc_2.3.2.ds1.orig.tar.gz
# 展開、linuxthreadsアドオンだっけ?それも展開
$ tar -xjvf glibc-2.3.2.tar.bz2
$ cd glibc-2.3.2
$ cp ../glibc-linuxthreads-2.3.2.tar.bz2 ./
$ tar -xjvf glibc-linuxthreads-2.3.2.tar.bz2
# パッチ当て
$ patch -p1 < glibc-2.3.2-arm.patch
# さらに修正必要、修正内容については後ろの方に載ってます
(修正)
# ビルド用のディレクトリに移動
$ cd ../
$ mkdir build
$ cd build
# こんふぃぎゃー
# カーネルヘッダは適したものを使ってください
$ ../glibc-2.3.2/configure --prefix=/home/username/usr/local/arm --target=arm-linux \
--enable-shared --enable-add-ons --enable-kernel=2.4.x \
--host=arm-linux --with-headers=/home/username/usr/src/linux-2.4.x/include
# ビルド、インストール
$ make
$ make install
ちなみにglibcのコンパイルも含めて、Zaurus Crossさんが超くわしいので、そちら見た方がためになります。
コンパイル通らないと困るので晒しておきます。
初めはglibc-2.3.2/include/libc-symbols.hの @nobitsを削ってたんですが、ググったら %nobitsにすればいいよ、ってのがあったので直しました。
--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.orig 2003-02-21 07:22:24.000000000 +0900
+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2006-12-17 23:21:42.000000000 +0900
@@ -47,6 +47,8 @@
#include <asm/page.h>
#include <sys/sysctl.h>
+#include <linux/input.h>
+
#define PATH_ARM_SYSTYPE "/etc/arm_systype"
#define PATH_CPUINFO "/proc/cpuinfo"
--- glibc-2.3.2/include/libc-symbols.h.orig 2003-01-04 08:21:03.000000000 +0900
+++ glibc-2.3.2/include/libc-symbols.h 2006-12-17 23:21:01.000000000 +0900
@@ -247,7 +247,7 @@
__attribute__ ((unused, section (".gnu.warning." #symbol __sec_comment))) \r = msg;
# define libc_freeres_ptr(decl) \r- __make_section_unallocated ("__libc_freeres_ptrs, "aw", @nobits") \r+ __make_section_unallocated ("__libc_freeres_ptrs, "aw", %nobits") \r decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment)))
# define __libc_freeres_fn_section \r __attribute__ ((section ("__libc_freeres_fn")))
研究上の用入りで glibc含むあまたのライブラリに変なオプション付けてクロスコンパイルしなきゃならなくて、とってもめんどくさいです。やる気出ません。
とりあえずクロスコンパイル環境を構築するために作業しています。
作業の途中で、Debianパッケージのすごさを垣間見ました。
# su # apt-get build-dep gcc-3.3 # exit $ apt-get -b source gcc-3.3
ってやるだけで、パッケージからソース解凍して、Debian用のパッチ当てて、ビルドするところまで出来ます。いやー、すげーわ。
プログラマ寄りの視点から見ると、なんでそこまでやるかね?って感じです。
利用者から見ると、楽すぎて涙がちょちょ切れます。ありがたいです。
同じ要領でクロスコンパイル環境も構築できないかなあ。
まあDebianならやっちゃってそうな気もしますけどね、私が無知なためわかりません。地味にやります。
昨日紹介したクリックスを提供している @games ですが、IEじゃないとゲームのページにたどり着けない変な仕組みになっています。
ゲームの置いてあるページに直に飛ぶと行けるんですけどね…。
@gamesのゲームが置いてあるページは、以下のように直に打てばIE以外の人でもいける。
http://www.atgames.jp/atgames/html/game/flash/0000.html
最後の4桁の数字.htmlとなっている部分を変えるとゲームが切り替わる。
今のところ17種類あるみたい。
番号 | ゲーム名 | 備考 |
---|---|---|
0001 | ウォーターボム | ひたすらかわす |
0002 | キュートショット | ゴルフみたいなゲーム |
0003 | チューチューパニック | |
0004 | アクアミッション | イライラ棒 |
0005 | アニマルクエスト | |
0006 | 消毒ナースナオミちゃん | 連打系 |
0007 | スーパーリフティング | |
0008 | 土用丑 | |
0009 | CLICK'S | |
0010 | アイサツワールド | タイピングゲーム |
0011 | ぷちぷち | さめがめ |
0012 | 電算マニア | 暗算ゲーム |
0013 | フルーツショップ | |
0014 | フォレストストーリー | |_| の形に繋げない。バグ? |
0015 | セルフィスタジアム | いわゆる野球盤 |
0016 | ポイ | |
0017 | ナンバリング | 数独 |
しかし0000や0018以上にするとサーブレットがエラーで落ちるってのはどうなんだ。
Error processing the templateと出る。しかし Not found ではないらしい。
徹夜したら次の日は眠いのは当たり前なんですけど、だんだん耐久力がなくなっているらしくて、最近は意識が飛ぶように眠くなります。
シス情セミナーでも寝てたし、研究室でも寝ていた。いかんな。
今日、9Fの研究室ではクリックスというゲームが大流行です。自分もやってみたんですが、シンプルながらなかなか面白いです。暇つぶしに最適。
ちょっと操作しづらいのが難点です。しかも一番基本である、数字の増減がわかりづらいから困る。一回間違うと戻せないからさらに困る。
今日もやってみたんですけどLv.74(36万点)でした。30万点超えた辺りから、5秒悩んだら終了してしまう。この段階での操作ミスは死を意味します。
アイテムの存在を今日知ったので使ってみたんですが、序盤はブロックシャッフルが効きますね。
後半はブロックをメチャクチャにされるとかえってわからなくなって死んだので、連鎖が起きるまでランダム消しを連打するか、あるいは操作ミスならヒビ直し -> タイム回復のコンボかな?どちらにせよアイテムはすぐ無くなるので、さほど点数は伸びませんでした…。
hdk氏とファイル名にUnicodeの制御文字を入れて遊んでいたら、案外面白い絵が撮れました。貼ろうと思ったんですが、既にhdk氏のページにあるので割愛です。
ステータスバー、ウインドウのタイトル、パスを表示している部分など全て同様におかしくなります。
ちなみにコマンドプロンプトなどから触れなくなります(Tabで補完するとなぜか使える)が、ショートファイルネームを使って叩けば平気みたいね。
エクスプローラでは長いファイル名は折り返されて表示されます。その処理が原因なのかUnicodeの制御文字が入っていると表示がおかしくなります。
RSSの更新日時を出すようにしました。といっても、先頭のdc:dateだけです。記事の更新日時は、記事に示した日付の正午に固定しました。
やろうと思えばmixiのように過去のエントリは書けない腐れ仕様にして、記事を作成した時刻を出せます。でも不便だし細かい時刻を出したところでさほど意味を感じないので割愛です。
RSSの日時なんざどうでも良くて、実はHEADにLast-Modifiedを出力しようと企んでる途中なわけですよ。
何のためかと言うとアンテナに優しいサイトを目指すためです。
身近にはhdk氏の Asahina antenna in Univ. of Tsukuba(ばなな(※))があります。
って、このサイト入ってないんだけどね。
確か最初に入れないでくれーって言った記憶がある。なんでだっけなあ…?Last-Modified出すようになったら入れてもらおうかな。と都合の良いことを考え中。
それはさておきhdk氏にアンテナってどうやって更新をチェックするのか聞いてみたら、基本的にはHEADらしいです。ということはHEADでだんまりなページはやりづらい(「ばなな」は他の方法でも取るので平気?)でしょうね。
あとContent-Lengthも出そうと思っています。けど、計算間違って変なことになりそうです。
そういやアンテナはRSSリーダーに押されているのか、あまり見なくなりました。これもご時世か。
(※)今は「つくばさん」です。タイトルに注目。
セイコーマートの焼きうどんが好きで結構買って食べてるんですが、材料に「豚うで肉」って書いてあって、うで?なんじゃそれ?って思った。
調べてみると「良く運動する部位なので、脂肪分が少なくヘルシー」とのこと。要は安くて固い肉ね。わかったナリ。
うで肉の情報を探していたら豚の腕の骨とうで肉を分離する専用の機械なんかも見つかった。
肩甲骨は手でやっても面倒くさそうな形しているのできっと需要があるんだろう。
人間はペットを飼いますが、人間以外の動物はペットを飼わないのでしょうか?
組み合わせで「人 - 犬」と表すとすると、例えば「熊 - 犬」とかさ。
問題を考えるに当たって、まずペットとは何か?を定義しましょう。飼う理由は、癒される、言うこと聞く、など無数にあります。共通して言えるのは「近くに居てためになる」ってことです。
それは「共生」でしょうか?
共生の例としては、アリとアブラムシなんてのが挙げられるのですが、ペットとは呼びません。ペットと言うと片方が絶対的な支配者であるように感じます。
では「寄生」でしょうか?
寄生とは片方が利益を得るのみ、もう一方は害を受けるのみ(宿主)という関係を指すので、それは言い過ぎです。
つまりどっちでもありません。てけとーにまとめるとこんな感じ。
(いらっしゃーい)共生 -- ペット -- 寄生(うぜえ)
♪なくてもいいけど、少しはあったほうが…そんなの微妙すぎ〜♪(わかる人はわかる表現)
さて、生きるか死ぬかのシビアな環境を考えると、ペットより共生する生物の方がWin-Winの関係を築けるため圧倒的に有利です。またペットは寄生に徹しておらず簡単に排除されるため、排除してもすがりついてくる寄生する生物に対して、生存能力が劣ります。
まとめるとペットはどちらと比べても生存に関して有利な点がない半端な存在です。
生存競争という観点ではペットという関係は非効率的で不利であり、シビアな自然界ではそんな関係は排除され、存在し得ないんです。
熊が犬を飼わないのはそういう理由ですね。お互いに良いことがあまりないんです。
ペットとは、生きるのにあくせくしなくなった人間の象徴なのでしょう。
以上、根拠無しの妄想のため、それっぽく見えれば成功。
雨降ってたから引き籠もってたけど、家が寒くて不快です。昼なのに室温10度って何さ。温度計が死んでるのか?
起きたら髪にエキサイティングな寝癖が付いていたが、面倒くさいからそのまま買い物に行った。
今日、変なハガキが発掘されました。開けてみたら明日の茨城県議会議員選挙のハガキじゃないか。もう無くなったもんだと思ってたんですが、見つかりました。
明日はついでに床屋行かないと、もーボサボサさ。
ドコモの三菱製携帯で充電池が爆発したみたいですが、ソニーのPCで大きく騒がれたおかげか、ばれてからごねずにすぐ回収しましたね。
ニュースに寄れば原因は電池パックに衝撃を与えたためです。内部の絶縁シートが破損してショートし、異常発熱して爆発するのだとか。
記事には餅みたいになった電池パックの写真だけが載っていましたが、電池パックだけではイマイチ説得力に欠けます。ぜひその電池パックが入っていた携帯も載せて欲しかったです。
例えば、本体が綺麗なら、電池が異常に脆くて壊れた(欠陥)と言えるし、逆に本体がボロボロなら、頻繁に落としたり投げ飛ばしたりして(※)壊れただけで、自業自得と言えるでしょう。
三菱が回収に乗り切ったってことは、前者である可能性が高いだろう、とは推測できますけどね。
何社もマスコミがあってたくさん記者が居るんだから、携帯本体も載せればもっとインパクトあるぜ!ってことくらい気づくだろうに。なぜにどうでも良いことしか書かないのか…。
それはさておき、この事件を受けて三洋は耐衝撃対策として、
「リチウムイオン電池の新製品。1mの高さから大理石の床に落としても壊れません!さらに耐荷重100kgfです!」
なんて製品を出したら面白いんじゃないかなあ。
なに、どこかで見たような宣伝文句だって?気のせい気のせい。
(※)携帯電話の説明書には「過度な衝撃を加えないでください、電池が損傷し破裂の危険性があります。」という注意書きがある。
貨物車の代表的な形状として「ミニバン」と「ステーションワゴン」と「ワンボックス」の三つがあります。
ワンボックスはボンネットのない長方形の車なのでわかりやすいとしても、ミニバンとステーションワゴンの違いって何?
てなことを新型のCMを見る度に思っていたのですが、この度疑問が氷解しました。
両者に共通しているのはボンネットがあって、居住空間(あるいは荷物スペース)が続いていることです。そのためどちらも形は極めて似ています。
しかし実にシンプルで決定的な違いがありました。
言われてみるとそうです。気づかなかったな。
それ以外は特に決まりはなさそうですが、他にもご存じの方は教えてくださいませ。
ここ最近、ナイスな軽量ノートがぞくぞく出てきたのでご紹介。
Panasonicの Let's Note W5 は、やはり抜群のバッテリー駆動時間が売りでしょう。1スピンドルタイプのT5、W5/T5より一回り小さいR5というタイプもあります。
ただLet's Noteシリーズ全般に言えるのですが、キーボードのキーが変な形(横長の長方形)なのが嫌ですね。それさえなければ良いノートなんですがね。
Sonyの VAIO type G は1スピンドルにすればなんと900gを切る超軽量設計が魅力的(2スピンドルにもできる)です。Vistaを載せるとしたらグラフィックがややパワー不足かもしれないけど、ノートだからどうでも良いね。
個人的にはデコボコしていないデザインに惹かれます。それでいて強度があるというのだから驚きですね。
NECの新型VersaPro UltraLite は今までの軽さそのままに2スピンドル、Core Duo採用とかなりパワーアップしています。
ただファンが付いてしまったため、うるさそうなのが難点です。それ以外は文句なし。
卒業したら研究室のノートは返すことになるので、その前に買いたいなあ。
さてどれがいいでしょうね…?
大下さんちに以前使っていた無線LANアクセスポイントを設置しました。こたつでネット環境、への第一歩です。
しかし大下邸にはノートPCがないので、入学時に買った重いA4ノートPCを置いといた。今までのルータの設定を引き継ぎ、ノートのKnoppixから接続を確認して設定終了。
ルータは何度かリセットしないと設定が反映されなかったり、同じ設定なのに繋がったり繋がらなかったりと、変な感じになっていた。やはりどこか壊れているのかもしれない。
しかしKnoppixをそのまま使うわけにも行かないし、OSは何を入れようか。とりあえず以前使ってたWindows 2000でいいか。
出勤の印鑑を押しに行くのを忘れたあげく、間違って押したら事務に「きちんと押しに来ないからこうなるんだよ、ボケが!」って怒られた。
事務から雷が落ちる前にKわきさんが連絡くれたくらいだし、Hらまさんだっけ?かなりお怒りモードだったのだなあ。
でもまあ理不尽な人ではなく仕事に真面目な感じで、こっちはちゃんとやってるのにふざけるなよ、ってな怒り方でしたので、素直に謝ってきました。
Namazuで過去日記が検索できるようになりました。
他にも過去から未来へ向かって表示する機能を実装しました。
過去の日記を見るときに日付順に表示して欲しいなあ。なんて要望(あるのかどうか知りませんけど)にお応えします。
日付順か、逆順かという引数がURLに追加されたので、日記のURLが従来と異なる形式になりました。これによりまたYahoo! が絨毯爆撃してくるでしょう…。
加えて /diaries/static/ 配下(12/13訂正:ミラーする際の不都合があったので /static/ 配下に移動しました)にstaticなhtmlを生成しました。Namazuのインデックス作成にはこれらのファイルを使っています。と言ってもWgetで取ってくるだけの雑な実装。
静的htmlを生成するスクリプトを実行するのは一ヶ月に一回だから…てきとーでいいのさ。
閏年とは関係ない、閏秒ってのがあります。原子時計の1秒(セシウム原子が励起する電磁波の周波数から求める)と地球の1秒(自転から求める)が同じ長さではないため、差を修正するためにどちらかを1秒遅らせるという行為です。
これをやらないと、(原子時計の時間に基づいている)時計では昼なのに、地球は夜なんてことが起こってしまうからです。
この説明を見たとき1秒遅らせると書いてあるのでてっきり、58, 59, 0, 1, ... となる時間を、58, 59, 60, 0, 1, ... とすると思っていました。でも時報サービスではそんな格好悪いことしないんですな。
以下、NTT東日本のサイトから引用。
過去における時報サービスの「うるう秒」の調整方法は、指定時刻の100秒前から秒音を100分の1秒ずつ長くし、時刻を1秒遅らせて調整してきました。「うるう秒」の調 整は、1972年7月1日に第1回の調整を行い、現在まで22回実施しています。(最近では1999年1月1日に実施)
こんな巧みに遅れさせているとは知らなかった。ずっと時報を聞いていても、人間はまず気づかないでしょうね。
< | 2006 | > | ||||
<< | < | 12 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 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 | - | - | - | - | - | - |
合計:
本日: