簡単CAEソフト

セミナー・通信講座
技術情報
SPH粒子法のご紹介 ダウンロード・購入

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


このページの内容に関するご質問はこちらまで。

作成者: 株式会社インサイト 三好昭生
Insight
info(at)meshman.jp 050-8885-4787
スカイプでのお問合せ
akio_miyoshi
株式会社 インサイト
Copyright (c) Insight Inc, 2000-2008 All Right Reserved.