ttt

getttyent

隠しイベント?

2009-09-21 22:26:18 | 日記・エッセイ・コラム

シルバーウィークとやらで、あちこちの行楽地は大勢の人で大混雑なんだとか。

ぜんぜん知らなかったのですが、浜松のフラワーパークで、

浜松モザイカルチャー世界博
(浜名湖立体花博)

というイベントが、先週末から始まったそうです。

別に隠していたわけじゃないと思いますが、本当に、まったく知りませんでした。

そもそも、モザイカルチャーって何?っていう疑問が・・・

200909212

マスコットキャラクターの名前は、「モザイ」というらしいです。

200909211

いろんなものが植物で作られているそうで、テレビのニュースでは、バカボンでおなじみのウナギイヌが映ってました。
横浜の「たねまる」もいるみたい・・・
ところで、横浜の博覧会のほうは、たくさん人が来てるのかな?


西岸良平名作集 タイム・スクーター

2009-09-20 22:37:18 | アニメ・コミック・ゲーム

読書の秋となりました。マンガですが・・・

20090920

西岸良平名作集
タイム・スクーター

第一話 黒い狼
第二話 ブラックマジック
第三話 キリコ
第四話 地球戦争
第五話 マンモスの謎
第六話 タイム・スクーター
第七話 リベンジャー
大時代ギャグろまん
 PART.1 コロッケボーイ
 PART.2 コロッケボーイ

コロッケボーイ以外は、全部、読み切りの短編作品となっています。

しかし、おなじみの作品とは少し違って、かなり、バイオレンス、スリル、SF、・・・そういった傾向が強い作品が多いです。

「黒い狼」なんかは、最後も、かなりせつない終わり方をしています。

「リベンジャー」は、ハードボイルドな感じ。

とはいえ、いつもと同じあの絵柄ですからね。絵と内容にギャップがあるのが、これがまたおもしろくって。

表題作の「タイム・スクーター」は、三丁目の夕日の世界とリンクしてたりするんですが、サスペンス風の出だしが、最後は・・・まあ読んでのお楽しみ、と。

個人的に気に入ったのは、「地球戦争」、「マンモスの謎」など、SF色の強い作品です。


(FreeBSD) /usr/ports/math/octaveで、/libexec/ld-elf.

2009-09-18 23:59:00 | デジタル・インターネット

FreeBSDのportsで、math/octaveをportupgrade中に、こんなエラーがでて終了・・・

making gendoc.cc
g++44 -O2 -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/include -o gendoc gendoc.cc -L/usr/local/lib -pthread
making DOCSTRINGS
/libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by ./gendoc not found
gmake[2]: *** [DOCSTRINGS] エラー 1
gmake[2]: ディレクトリ `/WORK/usr/ports/math/octave/work/octave-3.2.2/src' から出ます
gmake[1]: *** [src] エラー 2
gmake[1]: ディレクトリ `/WORK/usr/ports/math/octave/work/octave-3.2.2' から出ます
gmake: *** [all] エラー 2
*** Error code 1

Stop in /usr/ports/math/octave.

ちなみに、octaveは、USE_FORTRAN=yes になっているので、portsのバージョンが上がったみたい。


ちょっと調べてみました。

# ./gendoc
/libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by ./gendoc not found

なるほど、実行できませんね。

% nm -C gendoc | grep GLIBCXX_3.4.11
         U _ZNKSt5ctypeIcE13_M_widen_initEv@@GLIBCXX_3.4.11

GLIBCXX_3.4.11って、これのことですか。なるほど、symbol versioningってやつのことみたいですね。

えーと・・・

# ldd gendoc
gendoc:
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x480f9000)
        libm.so.5 => /lib/libm.so.5 (0x481ee000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x48203000)
        libthr.so.3 => /lib/libthr.so.3 (0x4820e000)
        libc.so.7 => /lib/libc.so.7 (0x48223000)

なるほど、たぶん、違うバージョンのGCCの共有ライブラリが使われている、というわけで。

というか、g++44、「/usr/local/bin/g++44」でコンパイルしているのに、/usr/lib/libstdc++.so.6 が使われている時点で、そりゃおかしくないか? ですね。


ふときがつけば、「libstdc++.so.6」って、同じ名前のファイルが、いくつもあるんですけど・・・

# ls -l /usr/local/lib/gcc*/libstdc++.so.6 /usr/lib/libstdc++.so.6
-r--r--r--  1 root  wheel   981660  8 26 17:51 /usr/lib/libstdc++.so.6
-rwxr-xr-x  1 root  wheel  4419577  9 17 09:57 /usr/local/lib/gcc43/libstdc++.so.6
-rwxr-xr-x  1 root  wheel  4560445  9 14 11:21 /usr/local/lib/gcc44/libstdc++.so.6

ついでに、libgcc_s.so.1も複数あるし。

# ls -1 /lib/libgcc_s.so.1 /usr/local/lib/gcc*/libgcc_s.so.1
/lib/libgcc_s.so.1
/usr/local/lib/gcc43/libgcc_s.so.1
/usr/local/lib/gcc44/libgcc_s.so.1

/usr/libのほうは・・・GLIBCXX_3.4.11というのが入ってない。

% strings /usr/lib/libstdc++.so.6|grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_FORCE_NEW

一方、GCC 4.4のほうは・・・あります。

% strings /usr/local/lib/gcc44/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

おまけ。GCC 4.3だけど、まあ、これはどうでもいいけど。

% strings /usr/local/lib/gcc43/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH


というわけで、/usr/local/lib/gcc44 にある共有ライブラリが使われるようにすればOKなはずなので、たとえばLD_LIBRARY_PATHを使ってやれば

# env LD_LIBRARY_PATH=/usr/local/lib/gcc44 ldd gendoc
gendoc:
        libstdc++.so.6 => /usr/local/lib/gcc44/libstdc++.so.6 (0x480f9000)
        libm.so.5 => /lib/libm.so.5 (0x481e3000)
        libgcc_s.so.1 => /usr/local/lib/gcc44/libgcc_s.so.1 (0x481f8000)
        libthr.so.3 => /lib/libthr.so.3 (0x48204000)
        libc.so.7 => /lib/libc.so.7 (0x48219000)

これで、実行できるようになります。

ですが、LD_LIBRARY_PATHを指定しないといけない、ってのは正常とは思えません。

ldconfigがおかしいのかな?と思ったのですが

# ldconfig -r
/var/run/ld-elf.so.hints:
        search directories: /lib:/usr/lib:/usr/lib/compat:/usr/local/lib:/usr/local/lib/compat/pkg:/usr/local/kde4/lib:/usr/local/lib/compat:/usr/local/lib/evolution/2.26:/usr/local/lib/gcc/i386-portbld-freebsd7.2/3.4.6:/usr/local/lib/gcc43:/usr/local/lib/gegl-0.0:/usr/local/lib/graphviz:/usr/local/lib/mysql:/usr/local/lib/nss:/usr/local/lib/pth:/usr/local/lib/qt4:/usr/local/lib/wine:/usr/local/lib/zsh:/usr/local/libexec/openldap:/usr/local/sge/lib/fbsd-i386:/usr/local/lib/virtualbox:/usr/local/lib/gcc44
        0:-lc.7 => /lib/libc.so.7
        1:-lcrypt.4 => /lib/libcrypt.so.4
(以下省略)

こういう順番でディレクトリを検索していくので、共有ライブラリが同じファイル名である以上、/usr/libが見つかってしまうのは、しかたなし。

LD_LIBRARY_PATHは使わずに、コンパイル時に、rpath(runpath, runtime shared library search path)を指定すれば、まあ、とりあえずOKかな、と。

% g++44 -O2 -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/local/include -o gendoc gendoc.cc -L/usr/local/lib -pthread -Wl,--rpath,/usr/local/lib/gcc44

% ldd gendoc
gendoc:
        libstdc++.so.6 => /usr/local/lib/gcc44/libstdc++.so.6 (0x480f9000)
        libm.so.5 => /lib/libm.so.5 (0x481e3000)
        libgcc_s.so.1 => /usr/local/lib/gcc44/libgcc_s.so.1 (0x481f8000)
        libthr.so.3 => /lib/libthr.so.3 (0x48204000)
        libc.so.7 => /lib/libc.so.7 (0x48219000)

ただ、わざわざこんな「-Wl,--rpath,/usr/local/lib/gcc44」というオプションを追加しなくちゃいけない、ってのはなんか間違っている気がします。
portsのgcc44で、このへんを、ケアしてもらえないんでしょうかね。


GNU C++ (GCC) version 4.4.2 20090908 (prerelease) (i386-portbld-freebsd7.2)
        compiled by GNU C version 4.4.2 20090908 (prerelease), GMP version 4.3.1, MPFR version 2.4.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 5feec5ea47297b9f3ff6755b82d5a555
COMPILER_PATH=/usr/local/libexec/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/:/usr/local/libexec/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/:/usr/local/libexec/gcc44/gcc/i386-portbld-freebsd7.2/:/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/:/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/
LIBRARY_PATH=/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/:/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-O2' '-fno-strict-aliasing' '-pipe' '-I/usr/local/include' '-I/usr/local/include' '-o' 'gendoc' '-L/usr/local/lib' '-pthread' '-shared-libgcc' '-mtune=i386'
/usr/local/libexec/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/collect2 -V -dynamic-linker /libexec/ld-elf.so.1 -o gendoc /usr/lib/crt1.o /usr/lib/crti.o /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/crtbegin.o -L/usr/local/lib -L/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2 -L/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/../../.. /tmp//ccM05ca2.o -lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/crtend.o /usr/lib/crtn.o
GNU ld version 2.15 [FreeBSD] 2004-05-23
  Supported emulations:
   elf_i386_fbsd


もしかして、g++44でコンパイルしたC++なプログラムって、ことごとく動かないんじゃ・・・

試してみよう。

#include <iostream>

int
main( int argc, char* argv[] )
{
  std::cout << "Hello world" << std::endl;

  return 0;
}

% g++44 hello.cc
% ldd a.out
a.out:
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x4807d000)
        libm.so.5 => /lib/libm.so.5 (0x48172000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x48187000)
        libc.so.7 => /lib/libc.so.7 (0x48192000)
% ./a.out
Hello world

あれ?本来とは違う共有ライブラリが使われているのに、動いちゃいますね。

% strings a.out|grep GLIBC
GLIBCXX_3.4

というわけで、新しいライブラリの必要としないみたい。

ただし、コンパイル時は、/usr/local/lib/gcc44/gcc/以下の共有ライブラリが参照されています。

% g++44 -Wl,--verbose hello.cc
GNU ld version 2.15 [FreeBSD] 2004-05-23
  Supported emulations:
   elf_i386_fbsd
using internal linker script:
==================================================
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386-freebsd", "elf32-i386-freebsd",
              "elf32-i386-freebsd")
OUTPUT_ARCH(i386)
省略

attempt to open /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/libstdc++.so failed
attempt to open /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/libstdc++.a failed
attempt to open /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/../../../libstdc++.so succeeded
-lstdc++ (/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/../../../libstdc++.so)
省略

attempt to open /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/libgcc_s.so failed
attempt to open /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/libgcc_s.a failed
attempt to open /usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/../../../libgcc_s.so succeeded
-lgcc_s (/usr/local/lib/gcc44/gcc/i386-portbld-freebsd7.2/4.4.2/../../../libgcc_s.so)





portsでインストールしたGCCを使うときは、rpathが自動的に追加されるようにならないかなぁ~。


はじめてのおつかい

2009-09-17 23:59:59 | 日記・エッセイ・コラム

20090917

はじめてのおつかい
はじめてのおおつか
はじめての大塚

すみません

これまで、山手線は、~池袋まで、か、~巣鴨までしか乗ったことが無かったんです。

今回、はじめて大塚駅で下車したので、これで、一応、山手線の全駅、通過or下車したことになりました。

今度、自転車で一周してみたいな

実は、都電もはじめて見ました。あんなものが、すぐ目の前を、ふつうに、にゅーぅっと走ってくんですね。


ノイズ磐梯山

2009-09-16 23:59:00 | 音楽

20090916

大塚のWelcome backで催された「ノイズ磐梯山」に行ってきました。
大人な雰囲気、という噂?が事前にありましたが、まさにそのとおり。

ゲストボーカルの「まるたまり」さんは、2年ほど前にちょっとだけ歌を聴いたりCDも買ったり、という感じだったのですが、本当に気持ちよさそうに歌ってました。

実は、松浦有希さんもゲストで出るというので、よし行くぞ!となったのでした。新曲「ワタシについて」・・・聞きほれて、見とれてるうちに、ああ、あっというまに。最後は、女性3人であのSwimmy。来月、同じWelcome backでライブをすると告知があり、これはまたスケジュール調整をしないと!

あまりたいしたことじゃないんですが。
以前、津久井教生さんがラジオで、たしかノイズ磐梯山の話をしてて(たぶん、このとき)、ラジオの中でもよく「ムラサキさんにはお世話になっていて」とかよく言ってたと思うのです。
でね・・・ムラサキさんとは、どなたですか?と。
今日、やっと、わかりました。ああ、WAVE MASTERの。人と人がどうつながっているのか、ちょっとわかりました。
点と線がつながったというか、昔のマンガにあるように、電気回路がつながって電流が流れて、電球が点灯した、みたいな。
個人的に、このことが、ものすごくスッキリとしました。


(FreeBSD) portsでPostgreSQL 8.3、8.4をインストールしたとき、.cshrc、.profileがコピーされない

2009-09-15 05:43:49 | デジタル・インターネット

以前から、あれ?なんか変だな・・・と思ってたんですが、portsで、postgresql83-server もしくは postgresql84-serverをインストールしたとき、~pgsql/.profile ~pgsql/.cshrc が作られないんです。

以前は、これらのファイルが作られていたと思ったんですけど・・・

あー、これで納得?!

# grep cshrc /usr/ports/databases/postgresql*-server/Makefile
/usr/ports/databases/postgresql73-server/Makefile:SUB_FILES+=   dot.cshrc dot.profile
/usr/ports/databases/postgresql73-server/Makefile:.    for i in profile cshrc
/usr/ports/databases/postgresql74-server/Makefile:SUB_FILES+=   dot.cshrc dot.profile
/usr/ports/databases/postgresql74-server/Makefile:.    for i in profile cshrc
/usr/ports/databases/postgresql80-server/Makefile:SUB_FILES+=   dot.cshrc dot.profile
/usr/ports/databases/postgresql80-server/Makefile:.    for i in profile cshrc
/usr/ports/databases/postgresql81-server/Makefile:SUB_FILES+=   dot.cshrc dot.profile
/usr/ports/databases/postgresql81-server/Makefile:.    for i in profile cshrc
/usr/ports/databases/postgresql82-server/Makefile:SUB_FILES+=   dot.cshrc dot.profile
/usr/ports/databases/postgresql82-server/Makefile:.    for i in profile cshrc

せっかくこれらのファイルが用意されてるのに・・・
/usr/ports/databases/postgresql83-server/files/dot.cshrc.in
/usr/ports/databases/postgresql83-server/files/dot.profile.in
/usr/ports/databases/postgresql84-server/files/dot.cshrc.in
/usr/ports/databases/postgresql84-server/files/dot.profile.in
どこにもインストールされないみたいです。忘れちゃったのかなぁ?

これらのファイルがないと、su pgsqlしてinitdbしたとき、エラーになっちゃうので、Unix系OSの超初心者は戸惑うかも。

昔のバージョンでは、たとえば
http://www.freebsd.org/cgi/cvsweb.cgi/ports/databases/postgresql73-server/Makefile?rev=1.153;content-type=text%2Fx-cvsweb-markup
にあるように

.    for i in profile cshrc	${INSTALL_DATA} ${WRKDIR}/dot.$i ${PREFIX}/share/postgresql/dot.$i.dist; \	${INSTALL_DATA} -o pgsql -g pgsql ${WRKDIR}/dot.$i ~pgsql/dot.$i.dist ; \	if [ ! -f ~pgsql/.$i ]; then \		${CP} -p ~pgsql/dot.$i.dist ~pgsql/.$i; \	fi.    endfor

という風に、ファイルをコピーしてくれてました。
あれ?でも上書きインストールしてるじゃん・・・


(FreeBSD) おっとports/lang/gcc44がインストールされちゃった。USE_FORTRAN=yesの変更のため

2009-09-14 21:46:54 | デジタル・インターネット

今日、portupgradeを実行したら、なにやら時間がかかってました。
ん?lang/gcc44をビルドしてるじゃないですか~。

これのことですか。

http://www.freebsd.org/cgi/cvsweb.cgi/ports/UPDATING.diff?r1=1.857;r2=1.858

20090912:
  AFFECTS: users of ports that have set USE_FORTRAN=yes
  AUTHOR: gerald@FreeBSD.org

  Ports that are built using the Fortran frontend of GCC (aka gfortran)
  will now use lang/gcc44 as the default compiler.

ports/Mk/bsd.gcc.mkが変更されて、USE_FORTRAN=yesのとき、これまでgcc43を使っていたのが、今度はgcc44を使うようになったのでした。

http://www.freebsd.org/cgi/cvsweb.cgi/ports/Mk/bsd.gcc.mk.diff?r1=1.31;r2=1.32;f=h

これで、もともと入ってる4.2.1な/usr/bin/gccと、なぜかgcc34、gcc43、gcc44・・・と、4つもgccがインストールされちゃいました。

不要になったらpkg_deleteしろ >> 自分

gccはビルドに時間がかかるので、あんまり頻繁にアップデートしてほしくないなぁ。それが嫌な人は、pkgtools.confのHOLD_PKGSに入れちゃってるのかなぁ?

ついでに気がついたこと。
というか、すっかり忘れていて、今頃気がついたんですが、USE_FORTRAN=yesのとき、RUN_DEPENDSにgccが入るようになってたんですね。

このときから。
http://www.freebsd.org/cgi/cvsweb.cgi/ports/Mk/bsd.gcc.mk.diff?r1=1.23;r2=1.24;f=h

過去記事
(FreeBSD) /usr/local/lib/liblapack.so: undefined reference to `_gfortran_pow_r8_i4'

ラブプラス。

凛子につづいて、二人めに、ネネさん。

リアルタイムモードでやってて思ったんですが、二股は難しい・・・


JET STREAM

2009-09-13 23:58:14 | 日記・エッセイ・コラム

なんとなくかったるい日曜の午前。

テレビから心地よいイージーリスニングミュージックと城達也の声。

通販番組の「音楽のある風景」で、JET STREAMのDVD、ブルーレイの宣伝でした。

20090913

FMラジオをよく聞いていた中学生、高校生のころ、ジェットストリームが聞こえてくると、ああそろそろ寝ないと明日がつらくなる、と思ったものでした。

ま、その程度しか、思い出はないんですが・・・

城達也といえば、映画の銀河鉄道999の最後のシーンですよ。

今 万感の思いをこめて 汽笛が鳴る

今 万感の思いをこめて 汽車が行く

ひとつの旅は終わり また新しい旅立ちがはじまる

さらばメーテル

さらば銀河鉄道999

さらば少年の日

何回見ても、ここは、せつないなぁ。せつなすぎる。

心の中は今でも少年