因为Redhat linux9.0自带的w3m-0.3.*(好像是)不能显示UTF-8编码的中文网页,比如我们学习日记,所以我用rpm -e w3m的命令卸载了原来的w3m,从网上下载高版本的来安装。
安装w3m-0.5.1,从http://prdownloads.sourceforge.net/w3m/处下载;
需要libgc库,从 http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/处下载了一个6.2版的;
安装libgc;
安装w3m-0.5.1,问题来了,执行./configure时不成功,提示:
checking size of long long... configure: error: cannot compute sizeof (long long), 77
See `config.log' for more details.
|
|
上网查询,在执行./configure前设置环境变量解决。
设置环境变量:
export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"
|
|
编译安装完,执行w3m,提示找不到libgc.so.1:
w3m: error while loading shared libraries: libgc.so.1: cannot open shared object file: No such file or directory
|
|
在/lib中加了一个libgc.so.1到/usr/local/lib/libgc.so.1.0.2的符号链接解决:
ln -s /usr/local/lib/libgc.so.1.0.2 /lib/libgc.so.1
|
|
下面附上两篇有关“安装w3m-0.5.1,问题来了,执行./configure时不成功”的帖子,是日本的。
(转自:http://www.tatsuyoshi.net/toyota/tech/20060331/index.html)
ここに書かれていることは無保証です。同じことを行って問題が発生しても、龍義は責任をとりません。
2006年3月31日
戻る
w3m の configure のエラー。
w3m の configure で、以下のエラーが出た。
checking size of long long... configure: error: cannot compute sizeof (long long), 77
See `config.log' for more details.
環境は RedHat9 / FedoraCore4 での Linux 。これを調べてみる。まず、この
環境でやったことは、 w3m で必要な libgc である Boehm GC をインストール
したこと。これは、 source をとってきて ./configure; make install ぐらいを
したのみ。w3m のバージョンは最新(と言っても、日付は2004年か…)の、0.5.1
を使った。これを解凍して configure すると。
[toyota@kashyyyk]% ./configure
〜snip〜
checking size of long long... configure: error: cannot compute sizeof (long long), 77
See `config.log' for more details.
調べてみたのだけど、ここに
export LDFLAGS='-Xlinker -R/usr/local/lib'
とするとうまくいく、ということが書いてあった。確かにうまくいったのだけど、
元記事にはよくわからないけど、やってみた、とか書いてあるし、なんとなく
納得いかないので調べてみた。-Xlinker はリンカに渡すオプションという意味で、
このあとのオプションはリンカに渡されるようである。つまり、 -R/usr/local/lib
の部分がリンカに渡される。なので、 ld を調べてみたのだけど、 -R のオプション
は、なんかファイル名の指定をするみたいな感じ、と思ったが、ちゃんと書いて
あった。
For compatibility with other ELF linkers, if the -R option is followed by a
directory name, rather than a file name, it is treated as the -rpath option.
だそうだ。なので、正確には、
export LDFLAGS='-Xlinker -rpath /usr/local/lib'
とするようである。解決方法はわかったが、原因がわからない。調べてみることに
した。
configure の中で、エラーを起きている部分を見た。以下のプログラムのコンパイル
に失敗しているようである。
long longval () { return (long) (sizeof (long long)); }
unsigned long ulongval () { return (long) (sizeof (long long)); }
#include <stdio.h>
#include <stdlib.h>
int
main ()
{
FILE *f = fopen ("conftest.val", "w");
if (! f)
exit (1);
if (((long) (sizeof (long long))) < 0)
{
long i = longval ();
if (i != ((long) (sizeof (long long))))
exit (1);
fprintf (f, "%ld\n", i);
}
else
{
unsigned long i = ulongval ();
if (i != ((long) (sizeof (long long))))
exit (1);
fprintf (f, "%lu\n", i);
}
exit (ferror (f) || fclose (f) != 0);
;
return 0;
}
本当はヘッダの部分にもう少し色々とつくのだけど、無くても問題が全くない。
まず、これを、一般ユーザでコンパイルしてみるが、問題なくコンパイルと、
実行はできる。じゃ、 configure はどうやってコンパイルをしているのか、
見てみた。
gcc -o conftest -g -O2 -I./libwc -I/usr/kerberos/include conftest.c -lm -lbsd -lnsl -ldl -lgc
のようである。一般ユーザで、このオプションをつけてコンパイルをしてみた。
[toyota@kashyyyk]% gcc -o conftest -g -O2 -I./libwc -I/usr/kerberos/include conftest.c -lm -lbsd -lnsl -ldl -lgc
[toyota@kashyyyk]% ./conftest
./conftest: error while loading shared libraries: libgc.so.1: cannot open shared object file: No such file or directory
だそうだ。少しやってみたら、 gcc -lgc conftest.c ではこのエラーが起きて、
gcc conftest.c では問題が起きないことがわかった。つまり、 Boehm GC の
ライブラリに問題があるようである。 ldd でコンパイルしてできたバイナリを
みてみた。
[toyota@kashyyyk]% ldd ./conftest
linux-gate.so.1 => (0x00149000)
libm.so.6 => /lib/libm.so.6 (0x00a32000)
libnsl.so.1 => /lib/libnsl.so.1 (0x0634b000)
libdl.so.2 => /lib/libdl.so.2 (0x00a58000)
libgc.so.1 => not found
libc.so.6 => /lib/libc.so.6 (0x00906000)
/lib/ld-linux.so.2 (0x008e8000)
原因はわかったけど、どこを探しているか気になったので見てみた。
[toyota@kashyyyk]% strace ./conftest
open("/lib/tls/i686/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/i686/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/i686/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/i686/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/i686/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/sse2/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libgc.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
結構探しているみたい。原因と対策をまとめてみた。
原因、Boehm GC のライブラリが見つからない。
自分でコンパイルした人は、何も指定しないと /usr/local/lib にインストール
されるのだけど、そのライブラリが見つからないのため、起きる。
対策1、/usr/lib にリンクを張る
やってみた。
[toyota@kashyyyk]% ln -s /usr/local/lib/libgc.so.1.0.2 libgc.so.1
これでうまくいった。
対策2、Boehm GC を /usr/lib にインストールする。
Boehm GC を configure するときに --prefix=/usr として make install する。
面倒なので、試してない。
対策3、LD_LIBRARY を指定してみる。
bash 系だと
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
LD_LIBRARY が設定されていない場合は。
export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"
な感じ。csh 系では。
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/local/lib"
LD_LIBRARY が設定されていない場合は。
setenv LD_LIBRARY_PATH /usr/lib:/usr/local/lib
これでもうまくいく。
対策4、上記の
export LDFLAGS='-Xlinker -rpath /usr/local/lib'
を行う。
どれかを行えば、良いはずである。
第二篇,转自:http://hidekazu.dhs1.sst.ne.jp/pukiwiki/pukiwiki.php?w3m
* Eclipse
* HTML
* ソフト
* Firefox
* ハード
2006-07-23
* MEMO
2006-07-21
* MySQL
2006-07-19
* なんだこれ?
* 開発日記
* ログ
* iアプリ
今日の15件
* Solaris10(20)
* DotProject(14)
* qmail(10)
* PHP(10)
* 開発日記(8)
* Tomcat TIPS(8)
* ハード(7)
* Log4j(7)
* JooReports(6)
* ログ(6)
* ソフト(6)
* MySQL(6)
* W-ZERO3(5)
* JDK(5)
* Apache(5)
w3m
テキストベースのWWWブラウザです。テキストだけあってはやい!
* w3m
o インストール
o リンク
o 参考書籍
o コメント
↑
インストール
http://w3m.sourceforge.net/からw3m-0.5.1.tar.gzをダウンロードしました。またこれでconfigureしますとエラーになったので、http://www.hpl.hp.com/personal/Hans_Boehm/gc/から、gc6.5.tar.gzをダウンロードしました。(gc6.4.tar.gzでも以前いけてました。)README.QUICKより
tar xzvf gc6.4.tar.gz
cd gc6.4
./configure --prefix=/usr/local
make
make check
make install
ではw3mです。
./configure
あれ、まだエラーがでます。checking size of long long... configure: error: cannot compute sizeof (long long), 77 /etc/ld.so.confを見てみると
include ld.so.conf.d/*.conf
となっており、/etc/ld.so.conf.dの中に/usr/local/libを追加して、
ldconfig
としてから、
make
make install
usr/local/bin/w3mにいました。doc-jpにマニュアルがありますので読んでみましょう。また 操作はkeymap.defaultを参考にしてみてください。あれ?CentOS4.1に入れて、何かキーを押すとセグメンテーション違反ですとでる....
↑
リンク
↑
参考書籍
↑
コメント
* 同じくCentOS4.1でw3mが落ちるのに悩んでいます。私のところでは、なぜかrootでなら落ちずに動く。何でだろう。 -- nakajima? 2005-08-15 (月) 17:32:55
o 貴重な情報ありがとうございます。私のところではrootでも落ちます...
* 何が違うのでしょう。Fedora3のw3m-0.51-4とdagにあるRHEL4のlibgc6.2のRPMでもrootなら平気でした。今は自分でmakeしたw3m-CVS先端とlibgc6.5で、sudoして使ってます(笑) -- なかじま? 2005-08-16 (火) 19:36:55
o 私もそれでちょっと試してみます。ありがとうございます。助かります。
* そういえば私はSELinuxを無効化しているので動いているのかも。 -- なかじま? 2005-08-17 (水) 19:08:55
o ありがとうございます。でもpermissiveで動かしていたりするんですね... とりあえずFC3のftp://rpmfind.net/linux/fedora/core/updates/3/i386/w3m-0.5.1-4.FC3.1.i386.rpmをインストールしたらrootでいけました。
お名前:
另外,记录一个相关的网址,上面的两篇文章都是这个网址上的:http://d.hatena.ne.jp/ir9Ex/20060630
在redhat linux9.0中安装了w3m后可以正常显示网页了,但是不能显示图片。经过重新执行./configure,在其中的显示信息中发现,系统中缺少几个图形方面的库,好像包括:glib, gtk+, imlib, imlib2, gdk-pixbuf等。
在redhat linux9.0安装光盘中安了gtk+,其它的是从网上搜索来的,安上后,可以显示图片了。
在单位上的ubuntu6.0.6中仍然是安装了w3m仍然不能显示图片,估计是同样的道理。
另外,我在搜索的时候,发现有个好像叫着rpmfind.com的网站的各种各样的rpm格式的软件都有,关于w3m的就有w3m*.rpm和w3m-img*.rpm,也许用这两个文件安装就可以正常显示图片了?