お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2007-11-27 14:19:30

tay
メンバ
登録日: 2007-10-23

/usr/bin/ldのバグの解決方法は?

tayです。

1ヶ月前から、adventureという解析ソフト(http://adventure.q.t.u-tokyo.ac.jp/jp/)の導入を試みるべく、Linuxの勉強をしながら、インストール作業を進めております。

OSはUbuntu7.10です。

adventureの一部をmakeした結果、下記のようなエラーとなりました。

error in ◎◎◎◎(.eh_frame); no .eh_frame_hdr table will be created.

上記のエラーメッセージの理由をadventureの開発元に問い合わせてみると、/usr/bin/ldのバグの可能性があるという回答が得られました。解決方法として、binutilsをアップデートすることが考えられるとのことでした。

それで、Synapticでbinutilsの情報を調べてみました。
その結果、

バーション:2.18-Oubuntu3(gutsy):最新バーション

依存情報:
依存:libc6(>=2.6-1)
提案:binutils-doc(=2.18-Oubuntu3)
衡突:gas
衡突:elf-binutils
衡突:modutils

となりました。バーションは最新バーションであるので、アップデートする余地がないと思いますが…。解決方法を教えていただけませんでしょうか。

エラーの内容は下記のとおりです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

$cd server
$ make
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c advvis_server.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c MasterServer.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c SlaveServer.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Master.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Slave.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c socket++.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c string++.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c systeminfo.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c FElement.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c FENode.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Matrix.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Mathfunc.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Tet4.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Tet10.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Hex8.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Mesh.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c transform.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Analysis.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Graphics.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Mapping.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c CrossSectionGenerator.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c Geomman.cpp
g++-2.95 -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/○○/ADVENTURE/bin/advsys-config --cflags`    -g -O2 -c ResultDataset.cpp
g++-2.95  -g -O2 -L/home/○○/ADVENTURE/bin/lib -o advvis_server  advvis_server.o MasterServer.o SlaveServer.o Master.o Slave.o socket++.o string++.o systeminfo.o FElement.o FENode.o Matrix.o Mathfunc.o Tet4.o Tet10.o Hex8.o Mesh.o transform.o Analysis.o Graphics.o Mapping.o CrossSectionGenerator.o Geomman.o ResultDataset.o  `/home/○○/ADVENTURE/bin/advsys-config --libs docio`
/usr/bin/ld: error in advvis_server.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in MasterServer.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in SlaveServer.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Master.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Slave.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in socket++.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in string++.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in systeminfo.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in FElement.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in FENode.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Matrix.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Tet10.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Hex8.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Mesh.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in transform.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Mapping.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in CrossSectionGenerator.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Geomman.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in ResultDataset.o(.eh_frame); no .eh_frame_hdr table will be created.

オフライン

 

#2 2007-11-27 16:34:15

aqn
メンバ
登録日: 2007-11-26

Re: /usr/bin/ldのバグの解決方法は?

Reference installation/runtime environment for ADVENTURE modules is Red Hat Linux 7.2 on Intel's x86 machines.

とAdventure公式にありましたので、FedoraやCentOS等のディストリビューションを使われたほうがよいと思います。

オフライン

 

#3 2007-11-27 19:16:33

hito
管理者
登録日: 2007-03-18

Re: /usr/bin/ldのバグの解決方法は?

# no .eh_frame_hdr table will be createdメッセージに対していきなり
# ldのバグと言ってくる開発元の信頼性については忘れておいて:)(気になるけど)

これは真にエラーでしょうか?  以下を確認してみてください。

・makeの返値は何が返りましたか?(make実行後にecho $?)
・実行バイナリは生成されていませんか?
 (簡単なテスト方法としては、make installしてみる)
・また、最適化オプションをO2ではなくOに落としてみるとどうなりますか?

もしかすると
https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/42609
の絡みがあるかもしれませんが、まず問題の現象がエラーなのか警告なのかを
きちんと切り分けましょう。

オフライン

 

#4 2007-11-28 07:36:07

tay
メンバ
登録日: 2007-10-23

Re: /usr/bin/ldのバグの解決方法は?

hito様、ご提案ありがとうございました。

最適化オプションをいろいろ変えてみました。
例えば、-O2,-Oだけでなく、-O3 -O0 -Os-fcaller-savesなど考えられる範囲で全て試してみました。しかし、反応は全く同じでした。

別の方法として、デバッグオプションも変えるべきでしょうか?

これとは別に、g++2.95からg++-3.3へ変更してみると、文法エラーが生じます。さらに、g++-3.4へ変更してみると、下記のようなエラーが発生します。開発元はg++-2.95の使用を奨励しています。

なお、make installすると、エラーが発生し、インストールできません。(g++バーション、最適化オプションを変えても同じでした。)

他に解決方法が考えられることがありましたら、教えていただけませんでしょうか。

よろしくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

Master.h:12 から include されたファイル中,
                 MasterServer.h:14 から,
                 advvis_server.cpp:23 から:
systeminfo.h:13:25: stdiostream.h: No such file or directory
systeminfo.h:15 から include されたファイル中,
                 Master.h:12 から,
                 MasterServer.h:14 から,
                 advvis_server.cpp:23 から:
string++.h:12:23: strstream.h: No such file or directory
string++.h:14:25: stdiostream.h: No such file or directory
In file included from systeminfo.h:15,
                 from Master.h:12,
                 from MasterServer.h:14,
                 from advvis_server.cpp:23:
string++.h:60: error: ISO C++ forbids declaration of `istdiostream' with no
   type
string++.h:60: error: `istdiostream' is neither function nor member function;
   cannot be declared friend
string++.h:60: error: 文法エラー before `&' token
In file included from Master.h:12,
                 from MasterServer.h:14,
                 from advvis_server.cpp:23:
systeminfo.h:36: error: `istdiostream' was not declared in this scope
systeminfo.h:36: error: `s' was not declared in this scope
systeminfo.h:36: error: invalid data member initialization
systeminfo.h:36: error: (use `=' to initialize static data members)
systeminfo.h:36: error: declaration of `int SystemInfo::setInfo'
systeminfo.h:35: error: conflicts with previous declaration `int
   SystemInfo::setInfo(CString&)'
In file included from MasterServer.h:16,
                 from advvis_server.cpp:23:
../client/Common/hash.h: member function 内の `V HashTable<V,
   K>::operator[](K)':
../client/Common/hash.h:64: 警告: `SList<Association<V, K>*>::iterator' is
   implicitly a typename
../client/Common/hash.h:64: 警告: implicit typename is deprecated, please see
   the documentation for details
SlaveServer.h:18 から include されたファイル中,
                 advvis_server.cpp:24 から:
Slave.h:13:25: stdiostream.h: No such file or directory
In file included from SlaveServer.h:18,
                 from advvis_server.cpp:24:
Slave.h: At global scope:
Slave.h:82: error: 文法エラー before `&' token
Slave.h:83: error: 文法エラー before `&' token
Slave.h:91: error: 文法エラー before `*' token
Slave.h:92: error: 文法エラー before `*' token
In file included from SlaveServer.h:21,
                 from advvis_server.cpp:24:
Geomman.h:42: error: `ostdiostream' was not declared in this scope
Geomman.h:42: error: `ostd' was not declared in this scope
Geomman.h:42: error: 文法エラー before `*' token
Geomman.h:46: error: `istdiostream' was not declared in this scope
Geomman.h:46: error: `ifs' was not declared in this scope
Geomman.h:46: error: invalid data member initialization
Geomman.h:48: error: `istdiostream' was not declared in this scope
Geomman.h:48: error: `ifs' was not declared in this scope
Geomman.h:48: error: 文法エラー before `*' token
make: *** [advvis_server.o] エラー 1
[email protected]:~/デスクトップ/a/adv/main/AdvVisual-1.0/server$ make cleantest -z "advvis_server" || rm -f advvis_server
rm -f *.o core *.core
[email protected]:~/デスクトップ/a/adv/main/AdvVisual-1.0/server$ make
g++-3.4 -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/tanaka/ADVENTURE/bin/advsys-config --cflags`    -g -O -c advvis_server.cpp
/usr/include/c++/3.4/backward/iostream.h:31 から include されたファイル中,
                 advvis_server.cpp:7 から:
/usr/include/c++/3.4/backward/backward_warning.h:32:2: 警告: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
Master.h:12 から include されたファイル中,
                 MasterServer.h:14 から,
                 advvis_server.cpp:23 から:
systeminfo.h:13:25: stdiostream.h: No such file or directory
systeminfo.h:15 から include されたファイル中,
                 Master.h:12 から,
                 MasterServer.h:14 から,
                 advvis_server.cpp:23 から:
string++.h:12:23: strstream.h: No such file or directory
In file included from systeminfo.h:15,
                 from Master.h:12,
                 from MasterServer.h:14,
                 from advvis_server.cpp:23:
string++.h:60: error: ISO C++ forbids declaration of `istdiostream' with no type
string++.h:60: error: `istdiostream' は関数でもメンバ関数でもありません -- friend とは宣言できません
string++.h:60: error: expected `;' が '&' トークンの前にあります
In file included from Master.h:12,
                 from MasterServer.h:14,
                 from advvis_server.cpp:23:
systeminfo.h:36: error: `istdiostream' has not been declared
systeminfo.h:36: error: ISO C++ forbids declaration of `s' with no type
In file included from Mesh.h:18,
                 from MasterServer.h:15,
                 from advvis_server.cpp:23:
../client/Common/slist.h: In member function `void SList<T>::append(T)':
../client/Common/slist.h:153: error: `class SList<T>::Link' is not a type
../client/Common/slist.h: In member function `int SList<T>::findItem(T)':
../client/Common/slist.h:199: error: expected `;' が "p" の前にあります
../client/Common/slist.h:202: error: `p' was not declared in this scope
In file included from MasterServer.h:16,
                 from advvis_server.cpp:23:
../client/Common/hash.h: In member function `V HashTable<V, K>::operator[](K)':
../client/Common/hash.h:64: error: expected `;' が "p" の前にあります
../client/Common/hash.h:69: error: `p' was not declared in this scope
In file included from SlaveServer.h:18,
                 from advvis_server.cpp:24:
Slave.h: At global scope:
Slave.h:82: error: ISO C++ forbids declaration of `istdiostream' with no type
Slave.h:82: error: expected `;' が '&' トークンの前にあります
Slave.h:83: error: ISO C++ forbids declaration of `ostdiostream' with no type
Slave.h:83: error: expected `;' が '&' トークンの前にあります
Slave.h:91: error: ISO C++ forbids declaration of `istdiostream' with no type
Slave.h:91: error: expected `;' が '*' トークンの前にあります
Slave.h:92: error: ISO C++ forbids declaration of `ostdiostream' with no type
Slave.h:92: error: expected `;' が '*' トークンの前にあります
In file included from SlaveServer.h:21,
                 from advvis_server.cpp:24:
Geomman.h:42: error: `ostdiostream' has not been declared
Geomman.h:42: error: ISO C++ forbids declaration of `ostd' with no type
Geomman.h:46: error: `istdiostream' has not been declared
Geomman.h:46: error: ISO C++ forbids declaration of `ifs' with no type
Geomman.h:48: error: `istdiostream' has not been declared
Geomman.h:48: error: ISO C++ forbids declaration of `ifs' with no type

オフライン

 

#5 2007-11-28 09:40:34

tay
メンバ
登録日: 2007-10-23

Re: /usr/bin/ldのバグの解決方法は?

tayです。

さらに説明を加えます。makeおよびsudo make installを行った結果の詳細を下記に示します。

解決方法に関して、思い当たることがありましたら、教えていただけませんか。

よろしくお願いします。

=====================================================================================
●makeを行った結果

g++2.95を使用し、最適化オプションを変更しながら、makeを行いました。その結果、下記のように3通りのエラーが得られました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
A) -O -O2 -O3 -Osのどれかを選択した場合、オプションの変更にも関わらず、下記の結果が得られた。



/usr/bin/ld: error in advvis_server.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in MasterServer.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in SlaveServer.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Master.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Slave.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in socket++.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in string++.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in systeminfo.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in FElement.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in FENode.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Matrix.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Tet10.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Hex8.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Mesh.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in transform.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Mapping.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in CrossSectionGenerator.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Geomman.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in ResultDataset.o(.eh_frame); no .eh_frame_hdr table will be created.

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

B) -O0 -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks -fdelayed-branch -felide-constructors -fexpensive-optimizations -ffast-math -ffloat-store -fforce-addr -fforce-mem -finline-functions -fkeep-inline-functions -fmemoize-lookups -fno-defer-pop -fno-function-cse -fno-inline -fno-peephole -fomit-frame-pointer -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fstrength-reduce -fthread-jumps -funroll-all-loops -funroll-loopsのどれかを選択した場合、オプションの変更にも関わらず、下記のエラーが得られた。




上記A)項目の内容に下記の内容とをあわせた内容となった。

/usr/bin/ld: error in Tet4.o(.eh_frame); no .eh_frame_hdr table will be created.
/usr/bin/ld: error in Graphics.o(.eh_frame); no .eh_frame_hdr table will be created.


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
C) -fno-default-inlineを選択した場合、下記の結果が得られた。



上記B)項目の内容に下記の内容とをあわせた内容となった。

Mapping.o: In function `CrossSection::reset(Point3D<double> &, Point3D<double> &, Point3D<double> &)':
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:55: undefined reference to `operator-(Point3D<double> const &, Point3D<double> const &)'
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:57: undefined reference to `operator-(Point3D<double> const &, Point3D<double> const &)'
Mapping.o: In function `CrossSection::reset(void)':
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:66: undefined reference to `operator-(Point3D<double> const &, Point3D<double> const &)'
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:68: undefined reference to `operator-(Point3D<double> const &, Point3D<double> const &)'
Mapping.o: In function `CrossSection::getPoint(int, int)':
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:106: undefined reference to `operator*(double, Vector3D<double> const &)'
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:106: undefined reference to `operator*(double, Vector3D<double> const &)'
/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server/Mapping.cpp:106: undefined reference to `operator+(Vector3D<double> const &, Vector3D<double> const &)'
collect2: ld returned 1 exit status
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
======================================================================================
●sudo make install
g++-2.95 を使用し、最適化オプションを-Oに選んだ結果、make後,sudo make installを行った結果、下記の結果が得られました。

---------------------------------------------------------------------------------------
make[1]: ディレクトリ `/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server' に入ります
/bin/sh ./mkinstalldirs /usr/local/bin
  usr/bin/install -c  advvis_server /usr/local/bin/advvis_server
/bin/sh: usr/bin/install: not found
make[1]: *** [install-binPROGRAMS] エラー 127
make[1]: ディレクトリ `/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server' から出ます
make: *** [install-am] エラー 2
---------------------------------------------------------------------------------------

オフライン

 

#6 2007-11-28 10:11:41

hito
管理者
登録日: 2007-03-18

Re: /usr/bin/ldのバグの解決方法は?

tay による投稿:

======================================================================================
●sudo make install
g++-2.95 を使用し、最適化オプションを-Oに選んだ結果、make後,sudo make installを行った結果、下記の結果が得られました。

---------------------------------------------------------------------------------------
make[1]: ディレクトリ `/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server' に入ります
/bin/sh ./mkinstalldirs /usr/local/bin
  usr/bin/install -c  advvis_server /usr/local/bin/advvis_server
/bin/sh: usr/bin/install: not found
make[1]: *** [install-binPROGRAMS] エラー 127
make[1]: ディレクトリ `/home/tanaka/デスクトップ/a/adv/main/AdvVisual-1.0/server' から出ます
make: *** [install-am] エラー 2
---------------------------------------------------------------------------------------

この結果からすると、コンパイルは通っているように思われます。
" no .eh_frame_hdr table will be created " が表示されても、
無視できる可能性があります(ただし性能が出ない可能性があるので、
解決するのが望ましいかもしれない)。

ちなみに、-O/-O2でmakeされる際にmake cleanは確実に実行していると
思って良いでしょうか?

また、g++-2.95を利用した場合、-O/-O2それぞれで、以下の結果を調べてください。
・makeの返値は何が返りましたか?(make実行後にecho $?)

0が出力されるのであれば、makeまでは(コンパイルまでは)問題ありません。
make installが通らない問題を解決すれば良いはずです。

0以外が返ってくる場合は何か対処が必要かもしれませんが、make installを
実行できていることからすると、適切に書かれたMakefileであるなら起こりえないと
考えています(が、予想外の可能性もあるので必ず調べてください)。

また、

usr/bin/install -c  advvis_server /usr/local/bin/advvis_server
/bin/sh: usr/bin/install: not found

からすると、単にMakefileがバグっていて、/usr/bin/install とすべきところを
usr/bin/install にしてしまっていることが疑われます。

Makefileにおいて、
INSTALL=usr/bin/install
というような行は見つからないでしょうか? もしあればこれを
INSTALL=/usr/bin/install
とすれば解決すると思われます。もしこういった箇所が見あたらなければ、
ソースコードのあるディレクトリで、grep -re '-c advvis_server' * を
実行した結果を貼って頂くと何かわかると思います。

最後の編集者: hito (2007-11-28 10:26:58)

オフライン

 

#7 2007-11-29 18:07:47

tay
メンバ
登録日: 2007-10-23

Re: /usr/bin/ldのバグの解決方法は?

makefileの中に、

INSTALL = $/usr/bin/install -c

となっているところが見つかりました。これを、

INSTALL = /usr/bin/install -c


に変更し、スムーズにsudo make installができました。

なお、makeを実行すると、相変わらず、エラーのような内容は出ます。
もちろん、make cleanを実行しています。

うまく、ソフトが動いてくれるといいな~と思いつつ、これから、ソフトを立ち上げてみます。

ありがとうございました。

tay

オフライン

 

Board footer

Powered by FluxBB