5. Advインストール
5.0 Advファイルの入手
5.0.1 adventureディレクトリの作成
/usr/local/adventure/に全てのadventure実行形式とライブラリをインストールすることにします。
%su
#cd /usr/local
#mkdir adventure/
#exit
5.0.2 アドベンチャアーカイブのダウンロード
アーカイブを置くためのディレクトリは作業者のホームのtmp/を利用します。
各モジュールのアーカイブはAdventureのサイトからダウンロードして下さい。下の表に各モジュールのアーカイブのファイル名を示します。
No. |
モジュール名 |
ファイル名 |
更新日 |
1 |
ADVENTURE_TriPatch |
AdvTriPatch-0.82b.tar.gz |
2001/04/02 |
2 |
ADVENTURE_TetMesh |
AdvTetMesh-0.81b.tar.gz |
2001/04/02 |
3 |
ADVENTURE_IO |
AdvIO-0.81b.tar.gz |
2001/05/23 |
4 |
ADVENTURE_BCtool |
AdvBCtool-0.81b.tar.gz |
2001/05/23 |
5 |
ADVENTURE_Metis |
AdvMetis-0.61.tar.gz |
2001/05/23 |
6 |
ADVENTURE_Solid |
AdvSolid-0.81b.tar.gz |
2001/05/23 |
7 |
ADVENTURE_Visual |
AdvVisual-0.2b.tar.gz |
2001/05/09 |
5.0.3 作業ディレクトリ
作業場は/usr/local/adventure/ではなく~auser/tmp/adventure/にある方が安心なのでそこで作業をします。
%cd
%cd tmp
%mkdir adventure
5.1 AdvTriPatch-0.82bのインストール
5.1.1 解凍
%cd adventure
%gunzip -c ../AdvTriPatch-0.82b.tar.gz | tar -xvf -
最後の-の意味はpipeの出力を示すファイル名ということらしい。
5.1.2 インストール
%cd
%cd tmp/adventure
%cd AdvTriPatch-0.82b
%su
#make install prefix=/usr/local/adventure/bin
#exit
5.1.2.1 インストールの確認
%ls /usr/local/adventure/bin
ADVENTURE_TriPatch* maskMelon* mcpach*
5.2 AdvTetMesh-0.81bのインストール
5.2.1 解凍
%cd
%cd tmp
%cd adventure
%gunzip -c ../AdvTetMesh-0.81b.tar.gz | tar -xvf -
5.2.2 インストール
%cd AdvTetMesh-0.81b
%cd TetMesh_M
Makefileのデフォールト設定はTru64なので編集してLinux用に修正します。
# for g++
#CXX = g++
# for cxx
CXX = cxx
を
# for g++
CXX = g++
# for cxx
#CXX = cxx
へ変更。
# for Linux
#LDFLAGS = -static
# for Tru64 Unix
LDFLAGS = -non_shared
を
# for Linux
LDFLAGS = -static
# for Tru64 Unix
#LDFLAGS = -non_shared
へ変更して保存します。
%make
g++ -Wall -O -I. -c whcommon.cc -o whcommon.o
whcommon.cc: In function `double TheTime (double &, double &)':
whcommon.cc:115: `CLK_TCK' undeclared (first use this function)
whcommon.cc:115: (Each undeclared identifier is reported only once for
each function it appears in.)
make: *** [whcommon.o] エラー 1
エラーです。CLK_TCKについてはこちらのサイトの記述を元に試したところ
#include <time.h>
をwhcommon.cのソースに追記すれば良いようです。
%make
今度は正常終了しました。
%cd ..
%su
#cp bin/* /usr/local/adventure/bin/
#exit
5.2.2.1 インストールの確認
%ls /usr/local/adventure/bin
ADVENTURE_TriPatch advtmesh8m maskMelon mcpach
5.3 AdvIOのインストール
5.3.1 解凍
ユーザauserでログイン
%cd tmp/adventure
%gunzip -c ../AdvIO-0.81b.tar.gz | tar -xvf -
5.3.2 インストール
%cd AdvIO-0.81b
%./configure
%make
makeの出力中略
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../src/idl -I../include -O0 -g -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include -c AdvFileIO.c
AdvFileIO.c: In function `adv_fio_vfprintf':
AdvFileIO.c:709: `float32' is promoted to `double' when passed through `...'
AdvFileIO.c:709: (so you should pass `double' not `float32' to `va_arg')
make[2]: *** [AdvFileIO.o] エラー 1
make[2]: 出ます ディレクトリ `/home/ryo/tmp/adventure/AdvIO-0.81b/FileIO'
make[1]: *** [all-recursive] エラー 1
make[1]: 出ます ディレクトリ `/home/ryo/tmp/adventure/AdvIO-0.81b'
make: *** [all-recursive-am] エラー 2
この対処方法は以下のURLに書いてあります。
http://adventure.sys.t.u-tokyo.ac.jp/jp/software/faq/faq_io_0002.html
709行のfload32をdoubleに修正して、再度makeしました。今度は成功しました。
%ls include/Adv
15個の*.hファイルが作られた。
%ls lib
4個のアーカイブファイル(のシンボリックリンク)が作られた。
libAdvBase.a -> /home/auser/tmp/adventure/AdvIO-0.81b/Base/libAdvBase.a
libAdvDocIO.a -> /home/auser/tmp/adventure/AdvIO-0.81b/DocIO/libAdvDocIO.a
libAdvFileIO.a -> /home/auser/tmp/adventure/AdvIO-0.81b/FileIO/libAdvFileIO.a
libAdvIDL.a -> /home/auser/tmp/adventure/AdvIO-0.81b/IDL/libAdvIDL.a
%su
#cd /usr/local/adventure
#mkdir lib/
#cd lib
#cp /home/auser/tmp/adventure/AdvIO-0.81b/Base/libAdvBase.a ./
#cp /home/auser/tmp/adventure/AdvIO-0.81b/DocIO/libAdvDocIO.a ./
#cp /home/auser/tmp/adventure/AdvIO-0.81b/FileIO/libAdvFileIO.a ./
#cp /home/auser/tmp/adventure/AdvIO-0.81b/IDL/libAdvIDL.a ./
#exit
%ls /usr/local/adventure/lib/
で4個のアーカイブファイルを確認。
%su
#cp -R ./include/ /usr/local/adventure/
#exit
%ls /usr/local/adventure/include/Adv
で15個のヘッダファイルを確認。
5.4 AdvBCtoolのインストール
5.4.1 解凍
ユーザauserでログイン
%cd tmp/adventure
%gunzip -c ../AdvBCtool-0.81b.tar.gz | tar -xvf -
5.4.2 インストール
%cd AdvBCtool-0.81b
%cd src
%cd bcGUI
%emacs Makefile
Mesaは/usr/にインストールしたので
GL_INC = -I/usr/include
GL_LIB = -L/usr/lib
は変更不要。
LessTifは/usr/X11R6/にインストールしたので、
MOTIF_INC = -I/usr/X11R6/include
MOTIF_LIB = -L/usr/X11R6/lib
のままで変更しない。
%make > make.log
In file included from ../Common/GUI/csetbcdlg.h:14,
from ../Common/GUI/csetbcdlg.cxx:14:
cforce.h:59:19: warning: no newline at end of file
cforce.h:59:19: warning: no newline at end of file
In file included from cforce.cxx:10:
cforce.h:59:19: warning: no newline at end of file
cforce.h:59:19: warning: no newline at end of file
In file included from copenglapp.h:25,
from copenglapp.cxx:10:
cforce.h:59:19: warning: no newline at end of file
cforce.h:59:19: warning: no newline at end of file
In file included from copenglapp.h:25,
from copenglview.cxx:8:
cforce.h:59:19: warning: no newline at end of file
cforce.h:59:19: warning: no newline at end of file
copenglview.cxx: In method `bool COpenGLView::RenderScene (float *)':
copenglview.cxx:303: warning: passing negative value `-1' for argument
passing 1 of `glPushName (unsigned int)'
copenglview.cxx:303: warning: argument of negative value `-1' to
`unsigned int'
In file included from copenglapp.h:25,
from main.cxx:35:
cforce.h:59:19: warning: no newline at end of file
cforce.h:59:19: warning: no newline at end of file
/usr/X11R6/lib/libXm.so: undefined reference to `XpGetDocumentData'
/usr/X11R6/lib/libXm.so: undefined reference to `XpStartPage'
/usr/X11R6/lib/libXm.so: undefined reference to `XpQueryExtension'
/usr/X11R6/lib/libXm.so: undefined reference to `XpEndPage'
/usr/X11R6/lib/libXm.so: undefined reference to `XpEndJob'
/usr/X11R6/lib/libXm.so: undefined reference to `XpSelectInput'
/usr/X11R6/lib/libXm.so: undefined reference to `XpGetContext'
collect2: ld returned 1 exit status
make: *** [bcGUI] エラー 1
webで
http://www.astronomy.net/forums/xephem/messages/79.shtml
を見つけた。その回答記事に従ってMakefileを訂正した。
%emacs Makefile
LIBS = -lMesaGLw -lGLU -lGL -lXm -lXt -lXmu -lXext -lSM -lICE -lX11 -lm
を
LIBS = -lMesaGLw -lGLU -lGL -lXm -lXp -lXt -lXmu -lXext -lSM -lICE -lX11 -lm
に変更した。再度
%make
今度は成功。
%su
#cp bcGUI /usr/local/adventure/bin/
#exit
%ls /usr/local/adventure/bin/
でコピーされたことを確認。
%cd ..
%cd faceOfMesh
%make
%su
#cp faceOfMesh /usr/local/adventure/bin/
#exit
%ls /usr/local/adventure/bin/
%cd ..
%cd makefem
%emacs Makefile
ADVSYSDIRにAdvIOを設置したディレクトリを記述する。
ADVSYSDIR = $(HOME)/tmp/adventure/AdvIO-0.81b
%make
<出力略>
%su
#cp makefem /usr/local/adventure/bin/
#exit
%ls /usr/local/adventure/bin/
%cd ..
%cd makepcg
%make
<出力略>
%su
#cp makepcg /usr/local/adventure/bin/
#exit
%ls /usr/local/adventure/bin/
%cd ..
%su
#cp msh2pcg /usr/local/adventure/bin/
#exit
%ls /usr/local/adventure/bin/
ADVENTURE_TriPatch bcGUI makefem maskMelon msh2pcg
advtmesh8m faceOfMesh makepcg mcpach
5.5 AdvMetisのインストール
5.5.1 解凍
ユーザauserでログイン
%cd tmp/adventure
%gunzip -c ../AdvMetis-0.61.tar.gz | tar -xvf -
5.5.2 インストール
%cd AdvMetis-0.61
%emacs Makefile.in
ADVSYSDにAdvIOを設置したディレクトリを記述する。
ADVSYSD = $(HOME)/tmp/adventure/AdvIO-0.81b
ふと気づいたが、AdvIOのヘッダファイルとアーカイブファイルは他のモジュールのコンパイルのみに必要なのであり、/usr/local/adventure/にはインストールする必要はなかったのではないか?要検証
%make
(cd METISLib ; make )
make[1]: 入ります ディレクトリ `/home/auser/tmp/adventure/AdvMetis-0.61/METISLib'
mpicc -O3 -I. -c coarsen.c
make[1]: mpicc: コマンドが見つかりませんでした
make[1]: *** [coarsen.o] エラー 127
make[1]: 出ます ディレクトリ `/home/auser/tmp/adventure/AdvMetis-0.61/METISLib'
make: *** [default] エラー 2
mpi関連の実行形式とライブラリを/usr/local/にコピーするのを忘れていました。3.2.3の最後5行にその方法を追記しておきました。
%make
<中略>
make[1]: 出ます ディレクトリ `/home/auser/tmp/adventure/AdvMetis-0.61/ParMETISLib'(cd ADVENTURE_METIS ; make )
make[1]: 入ります ディレクトリ `/home/auser/tmp/adventure/AdvMetis-0.61/ADVENTURE_METIS'
mpicc -O3 -DWHICH_METIS=METIS_PartGraphKway `/home/ausertmp/adventure/AdvIO-0.81b/advsys-config --cflags` -I.. -I../METISLib -I../ParMETISLib -o adventure_metis.o adventure_metis.c -c
/bin/sh: /home/ausertmp/adventure/AdvIO-0.81b/advsys-config: そのようなファイルやディレクトリはありません
In file included from adventure_metis.c:56:
adventure_metis.h:66:29: Adv/AdvDocument.h: そのようなファイルやディレクトリはありません
In file included from element.h:36,
from adventure_metis.h:71,
from adventure_metis.c:56:
adv_format.h:40:29: Adv/AdvDocument.h: そのようなファイルやディレクトリはありません
make[1]: *** [adventure_metis.o] エラー 1
make[1]: 出ます ディレクトリ `/home/auser/tmp/adventure/AdvMetis-0.61/ADVENTURE_METIS'
make: *** [default] エラー 2
理由は分かりました。Makefile.inで
ADVSYSD = $(HOME)/tmp/adventure/AdvIO-0.81b
であるべきところを
ADVSYSD = $(HOME)tmp/adventure/AdvIO-0.81b
にしてました。
%cd ADVENTURE_METIS
%su
#cp adventure_metis /usr/local/adventure/bin
#exit
5.5.2.1 インストールの確認
%ls /usr/local/adventure/bin
ADVENTURE_TriPatch advtmesh8m faceOfMesh makepcg mcpach
adventure_metis bcGUI makefem maskMelon msh2pcg
5.6 AdvSolidのインストール
5.6.1 解凍
ユーザauserでログイン
%cd tmp/adventure
%gunzip -c ../AdvSolid-0.81b.tar.gz | tar -xvf -
5.6.2 インストール
%cd AdvSolid-0.81b
%./configure --with-adv=/home/auser/tmp/adventure/AdvIO-0.81b --prefix=/home/auser/tmp/adventure/AdvSolid-0.81b
<出力略>
%make
<出力略>
%make install
<出力略>
%su
#cp bin/* /usr/local/adventure/bin/
#exit
5.6.2.1 インストールの確認
%ls /usr/local/adventure/bin
ADVENTURE_TriPatch advsolid-h bcGUI log2cnv-nr maskMelon
adventure_metis advsolid-p faceOfMesh log2info mcpach
advshow advsolid-s hddmmrg makefem msh2pcg
advsolid advtmesh8m log2cnv-cg makepcg
が追加されました。
5.7 AdvVisualのインストール
5.7.1 解凍
ユーザauserでログイン
%cd adventure
%gunzip -c ../AdvVisual-0.2b.tar.gz | tar -xvf -
5.7.2 インストール
%cd AdvVisual-0.2b
%cd server
%./configure --with-adv=/home/auser/tmp/adventure/AdvIO-0.81b
<出力略>
%make
次のエラーが起きます。
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/advsys-config --cflags` -g -O2 -c advvis_server.cpp
/bin/sh: /advsys-config: そのようなファイルやディレクトリはありません
In file included from MasterServer.h:24,
from advvis_server.cpp:22:
ResultDataset.h:12:29: Adv/AdvDocument.h: そのようなファイルやディレクトリはありません
In file included from SlaveServer.h:21,
from advvis_server.cpp:23:
Geomman.h:10:29: Adv/AdvDocument.h: そのようなファイルやディレクトリはありませんmake: *** [advvis_server.o] エラー 1
configureコマンドの入力ミスです。参考にしたVine 2.1 CRのマニュアルのミスです。
%./configure --with-advio=/home/auser/tmp/adventure/AdvIO-0.81b
configureからやり直して、再びmakeをしたら別のエラーが出ました。
%make g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c advvis_server.cpp
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c MasterServer.cpp
In file included from MasterServer.cpp:12:
Utility.h: In method `int Launcher::execute ()':
Utility.h:112: `exit' undeclared (first use this function)
Utility.h:112: (Each undeclared identifier is reported only once for
each function it appears in.)
make: *** [MasterServer.o] エラー 1
これはUtility.hの頭の方に
#include <stdlib.h>
を挿入すれぱ解決すると思われます。挿入後、
make
今度はSlaveServer.cpp:286で`exit' undeclaredが出ました。<stdlib.h>をincludeします。
make
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c SlaveServer.cpp
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c Master.cpp
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c Slave.cpp
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c socket++.cpp
socket++.cpp: In method `int SockInetServer::noChannel ()':
socket++.cpp:351: `struct fd_set' has no member named `fds_bits'
make: *** [socket++.o] エラー 1
対策
socket++.cpp の348行目の
#if 0 を
#if 1 に書き換えてから
% make clean
% make
まだエラーが出ます。
%make
<中略>
g++ -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETHOSTNAME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -I. -I. -I../client/Common `/home/ryo/tmp/adventure/AdvIO-0.81b/advsys-config --cflags` -g -O2 -c ResultDataset.cpp
ResultDataset.cpp: In method `int CAdvFEGenericAttribute::set (int,
char *)':
ResultDataset.cpp:36: `strlen' undeclared (first use this function)
ResultDataset.cpp:36: (Each undeclared identifier is reported only once
for each function it appears in.)
ResultDataset.cpp:37: `strcpy' undeclared (first use this function)
ResultDataset.cpp: In method `int CAdvFEGenericAttribute::setFType ()':
ResultDataset.cpp:85: `strcmp' undeclared (first use this function)
make: *** [ResultDataset.o] エラー 1
どうも<string.h>をincludeすると良いみたいです。
%make
今度は成功しました。
%su
#cp advvis_server /usr/local/adventure/bin/
#exit
%cd ..
%cd client
%emacs Makefile
Mesaは/usr/にインストールしたので
MESA_INCDIR = /usr/include
MESA_LIBDIR = /usr/lib
に設定する。
LessTifは/usr/X11R6/にインストールしたので、
MOTIF_INCDIR = /usr/X11R6/include
MOTIF_LIBDIR = /usr/X11R6/lib
に設定する。
%make linux
mkfont.cpp:52: `strlen' undeclared
が出ました。また<string.h>をincludeします。
/usr/X11R6/lib/libXm.so: undefined reference to `XpGetDocumentData'
/usr/X11R6/lib/libXm.so: undefined reference to `XpStartPage'
/usr/X11R6/lib/libXm.so: undefined reference to `XpQueryExtension'
/usr/X11R6/lib/libXm.so: undefined reference to `XpEndPage'
/usr/X11R6/lib/libXm.so: undefined reference to `XpEndJob'
/usr/X11R6/lib/libXm.so: undefined reference to `XpSelectInput'
/usr/X11R6/lib/libXm.so: undefined reference to `XpGetContext'
collect2: ld returned 1 exit status
make[1]: *** [advvis] エラー 1
make[1]: 出ます ディレクトリ `/home/auser/tmp/adventure/AdvVisual-0.2b/client'
make: *** [linux] エラー2
bcGUIのmakeの時と同じエラーなので、同じ対策を取る。
%emacs Makefile
linux :
....
"LIBS = -lXm -lXt -lX11 -lXext -lGLU -lGL -lpthread -lm"
を
linux :
....
"LIBS = -lXm -lXp -lXt -lX11 -lXext -lGLU -lGL -lpthread -lm"
に変更しました。再度
%make clean
%make linux
で成功。
%su
#cp advvis /usr/local/adventure/bin/
#exit
このページの内容に関するご質問はこちらまで。