簡単CAEソフト

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

5. Advインストール


  • ネットワークにつながずにFDでIO, Metis, Solidの3モジュールをコピー

5.0 Advファイルの入手

5.0.1 フロッピーディスクのmount

mount -t vfat /dev/fd0 /mnt/floppy

で成功。-t msdosだと8.3文字のファイル名に縮められてしまうのでだめ。

5.0.2 adventureディレクトリの作成

%cd /usr/local
%mkdir adventure/

アーカイブ用のディレクトリを作成
%cd adventure
%mkdir archive

5.0.3 アドベンチャアーカイブのコピー

%cd archive
%cp /mnt/floppy/* ./

同様にBCtoolをFDでコピー。一旦FDをアンマウントしないといけない。

%umount /dev/fd0
%mount -t vfat /dev/fd0 /mnt/floppy
%cp /mnt/floppy/* ./

引き続きTetMeshからPDFを除いたものとTriPatchをFDでコピー。TetMeshをばらしたのは、アーカイブが大きすぎるため。

5.0.4 解凍

Adv_IO解凍用ディレクトリの作成

%cd /usr/local/adventure
%mkdir AdvIO
%mv archive/AdvIO-0.81b.tar.gz AdvIO/
%cd AdvIO
%gunzip AdvIO-0.8b.tar.gz
%tar -xvf AdvIO-0.81b.tar
%gzip AdvIO-0.81b.tar
%mv AdvIO-0.81b.tar ../archive/

5.0.5 作業ディレクトリの移動

作業場は/usr/loca/にあるより/miyoshiにある方が安心なので/adventureを移動

#su
#cd /usr/local
#mv /usr/loca/adventure ~miyoshi/
#exit

5.1 AdvTriPatch-0.82bのインストール

5.1.1 解凍

突然miyoshiで操作をしようとしたら、属性がrootになっていてファイルを操作不能

%su
#cd ~miyoshi
#chown -R miyoshi:miyoshi adventure

で所有者を変更した。

%gunzip AdvTriPatch-0.82b.tar.gz
%tar -xvf AdvTriPatch-0.82b.tar

5.1.2 環境変数のセット

(1)環境変数PATHに/usr/loca/binを追加する。
(2)共有ライブラリを探す環境変数LD_LIBRARY_PATHに/usr/local/libを追加する。

/rootの.cshrcのバックアップを取る。

%su
#cd /root
#cp .cshrc .cshrc.original
#emacs .cshrc

(1)はsetenv PATHの行を次のように変更
setenv PATH="/usr/local/bin:/usr/sbin:/sbin:${PATH}"
(2)は次の1行を追加
setenv LD_LIBRARY_PATH /usr/local/lib

%su
#mkdir /usr/local/adventure
#tcsh
#source .cshrc
#printenv

なぜかrootだとtcshを起動しても自動的に.cshrcが呼ばれないのでsourceコマンドで実行する。

5.1.3 インストール

#cd ~miyoshi/adventure/AdvTriPatch-0.82b
#make install prefix=/usr/local/adventure/bin
#exit

5.1.3.1 インストールの確認

%ls /usr/local/adventure/bin
ADVENTURE_TriPatch* maskMelon* mcpach*

5.2 AdvTetMesh-0.81bのインストール

フロッピーを使って苦労してダウンロードしてきた部分アーカイブであるAdvTetMesh-0.81bS.tar.gzは今やftpで取得したフルアーカイブがあるので削除した。

5.2.1 解凍

/root/tmp/からAdvTetMesh-0.81bS.tar.gzを~miyoshi/adventure/archiveに移動した後にchownでオーナを変更。
%cd ~miyoshi
%cd adventure
%cd archive
%su
#chown miyoshi:miyoshi AdvTetMesh-0.81bS.tar.gz
#exit
%cd ..
%gunzip -c archive/AdvTetMesh-0.81b.tar.gz | tar -xvf -

最後の-の意味はtarの入力をファイルとして扱うという意味らしい。

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
%cd ..
%su
#cp bin/* /usr/local/adventure/bin/

5.2.2.1 インストールの確認

%ls /usr/local/adventure/bin
ADVENTURE_TriPatch advtmesh8m maskMelon mcpach

5.3 AdvIOのインストール

5.3.1 解凍

5.0.4でAdv_IOは既に解凍した。

5.3.2 インストール

%cd adventure
%cd AdvIO-0.81b
%./configure
%make
%ls include/Adv
15個の*.hファイルが作られた。
%ls lib
4個のアーカイブファイルが作られた。

%su
#cp -R ./lib/ /usr/local/adventure/
#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 解凍

一般ユーザでログイン

%cd adventure
%gunzip -c archive/AdvBCtool-0.81b.tar.gz | tar -xvf -

5.4.2 インストール

%cd AdvBCtool-0.81b
%cd src
%cd bcGUI
%emacs Makefile

Mesaは/usr/localにインストールしたので

GL_INC = -I/usr/include
GL_LIB = -L/usr/lib

GL_INC = -I/usr/local/include
GL_LIB = -L/usr/local/lib

に変更する。

LessTifは/usr/X11R6/にインストールしたので、

MOTIF_INC = -I/usr/X11R6/include
MOTIF_LIB = -L/usr/X11R6/lib

のままで変更しない。

%make > make.log
copenglview.cxx: In method `bool COpenGLView::RenderScene(float *)
':
copenglview.cxx:303: warning: negative value `-1' passed as
argument 1 of `glPus
hName(GLuint)'
../Common/TFC/cnode.o: In function `_Rb_tree<CMESH *, pair<CMESH
*const, bool>,
_Select1st<pair<CMESH *const, bool> >, less<CMESH *>,
allocator<bool> >::_M_crea
te_node(pair<CMESH *const, bool> const &)':
../Common/TFC/cnode.o(._Rb_tree<CMESH *, pair<CMESH *const, bool>,
_Select1st<pa
ir<CMESH *const, bool> >, less<CMESH *>, allocator<bool>
>::gnu.linkonce.t._M_cr
eate_node(pair<CMESH *const, bool> const &)+0x51): undefined
reference to `__sta
rt_cp_handler'
../Common/TFC/cnode.o: In function `vector<CMESH *,
allocator<CMESH *> >::_M_ins
ert_aux(CMESH **, CMESH *const &)':
../Common/TFC/cnode.o(.vector<CMESH *, allocator<CMESH *>
>::gnu.linkonce.t._M_i
nsert_aux(CMESH **, CMESH *const &)+0x169): undefined reference to
`__start_cp_h
andler'
../Common/TFC/cnode.o: In function `_Rb_tree<CELEMENTGRP *,
pair<CELEMENTGRP *co
nst, bool>, _Select1st<pair<CELEMENTGRP *const, bool> >,
less<CELEMENTGRP *>, al
locator<bool> >::_M_create_node(pair<CELEMENTGRP *const, bool>
const &)':
../Common/TFC/cnode.o(._Rb_tree<CELEMENTGRP *, pair<CELEMENTGRP
*const, bool>, _
Select1st<pair<CELEMENTGRP *const, bool> >, less<CELEMENTGRP *>,
allocator<bool>
>::gnu.linkonce.t._M_create_node(pair<CELEMENTGRP *const, bool>
const &)+0x51):
undefined reference to `__start_cp_handler'
../Common/TFC/cnode.o: In function `vector<CELEMENTGRP *,
allocator<CELEMENTGRP
*> >::_M_insert_aux(CELEMENTGRP **, CELEMENTGRP *const &)':
../Common/TFC/cnode.o(.vector<CELEMENTGRP *, allocator<CELEMENTGRP
*> >::gnu.lin
konce.t._M_insert_aux(CELEMENTGRP **, CELEMENTGRP *const
&)+0x169): undefined re
ference to `__start_cp_handler'
../Common/TFC/cnode.o: In function `allocator<pair<CMESH *const,
bool> >::alloca
tor(void)':
../Common/TFC/cnode.o(.allocator<pair<CMESH *const, bool>
>::gnu.linkonce.t.(voi
d)+0x18): undefined reference to `__start_cp_handler'
../Common/TFC/cnode.o(.gnu.linkonce.t._._t9allocator1Zt4pair2ZCP5C
MESHZb+0x33):
more undefined references to `__start_cp_handler' follow
/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)/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/

5.5 AdvMetisのインストール

5.5.1 解凍

一般ユーザでログイン

%cd adventure
%gunzip -c archive/AdvMetis-0.61.tar.gz | tar -xvf -

5.5.2 インストール

%cd AdvMetis-0.61
%emacs Makefile.in

ADVSYSDにAdvIOを設置したディレクトリを記述する。

ADVSYSD = $(HOME)/adventure/AdvIO-0.81b

ふと気づいたが、AdvIOのヘッダファイルとアーカイブファイルは他のモジュールのコンパイルのみに必要なのであり、/usr/local/にはインストールする必要はなかったのではないか?

%make
%cd ADVENTURE_METIS
%su
#cp adventure_metis /usr/local/adventure/bin
#exit

5.5.2.1 インストールの確認

%ls /usr/local/adventure/bin

5.6 AdvSolidのインストール

5.6.1 解凍

一般ユーザでログイン

%cd adventure
%gunzip -c archive/AdvSolid-0.81b.tar.gz | tar -xvf -

5.6.2 インストール

%cd AdvSolid-0.81b
%./configure --with-adv=/home/miyoshi/adventure/AdvIO-0.81b --prefix=/home/miyoshi/adventure
%make
%make install
%cd ..
%su
#cp bin/* /usr/local/adventure/bin/
#exit

5.6.2.1 インストールの確認

%ls /usr/local/adventure/bin

advshow advsolid advsolid-h advsolid-p advsolid-s hddmmrg log2cnv-cg log2cnv-nr log2info

が追加された。

 

5.7 AdvVisualのインストール

5.7.1 解凍

一般ユーザでログイン

%cd adventure
%gunzip -c archive/AdvVisual-0.2b.tar.gz | tar -xvf -

5.7.2 インストール

%cd AdvVisual-0.2b
%cd server
%./configure --with-advio=/home/miyoshi/adventure/AdvIO-0.81b
%make

次のエラーが起きる。

socket++.cpp: In method 'Init SockInetServer::noChanel()':
socket++.cpp: 351: 'struct fd_set' has no member named 'fds_bits'
make:*** [socket++.o] Error 1.

対策

socket++.cpp の348行目の

#if 0 を
#if 1 に書き換えてから

% make clean
% make

%su
#cp advvis_server /usr/local/adventure/bin/
#exit
%cd ..
%cd client
%emacs Makefile

Mesaは/usr/localにインストールしたので

MESA_INCDIR = /usr/include
MESA_LIBDIR = /usr/lib

に設定する。

LessTifは/usr/X11R6/にインストールしたので、

MOTIF_INCDIR = /usr/X11R6/include
MOTIF_LIBDIR = /usr/X11R6/lib

に設定する。

%make linux

/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/miyoshi/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.