logo
ホーム •  フォーラム •  日本語wikiトップ •  アカウント情報 •  サイト内検索 •  新規登録
 ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
 メインメニュー
 米国サイト
 オンライン状況
26 人のユーザが現在オンラインです。 (3 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 26

もっと...

Re: FGCOMについて

このトピックの投稿一覧へ

通常 Re: FGCOMについて

msg# 1.2.1.1.1.1.1.1.1.1.1.1.1.1
depth:
13
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-5-17 3:11
toshi  長老   投稿数: 1506
toshiです。

基本的に、プログラミングに関してあまり深い事は分からないのですが、今回のエラーについては予想がつきますのでお答えします。

まず私は、cygwin 環境と fgcom のソースは手元にあり、plib と OpenAl は手元にない状態です。
なので、plib や OpenAl のソースの構成や、コンパイルするとどういうファイルが生成されるのか未確認です。
# 特に OpenAl を cygwin でコンパイルするは大変そうな気がして敬遠しているのですが、うまくできましたか?

まず、cygwin の setup.exe を使って、「gcc: C compilier update helper」をインストールしているものと仮定します。

ついでに「subversion: A version control system」をインストールしておくことをお勧めします。
subversion を入れておくと、svn コマンドが使えるだけでなく、Makefile の中で
SVNDEF:=-D'SVN_REV="$(shell svnversion -n .)"'
みたいなことが出来るようになると思います。

次に、OpenAL や plib、fgcom のソースは、ホームディレクトリよりも下に入れておくことをお勧めします。
例えば、
~/src/openal
~/src/plib
~/src/fgcom
といった感じです。

同様に、コンパイルした openal と plib のライブラリ (.a) やインクルードファイル (.h) も
/usr/local/lib や /usr/include
のような cygwin のシステムディレクトリではなく、
~/src/openal/lib/libopenal.a
などのように配置することをお勧めします。

これは、自分でコンパイルしたファイルの管理をしやすくする (バージョンアップしたり、何かがおかしければすぐに削除できる) と共に、システムで提供しているファイルとの区別を容易にするためです。
※ 素性の確かなパッケージをインストールするなら話は別ですが。

それで、肝心のエラーですが、-mno-cygwin オプションをつけつつ /usr/include をインクルードディレクトリに指定して g++ を実行していることが原因のようです。

fgcom.cpp と同様に iostream をインクルードする以下のような簡単なソースコードを
$ g++ -mno-cygwin hello.cpp
としてコンパイルすると何も問題は起きませんが、
$ g++ -mno-cygwin -I/usr/include hello.cpp
とすると同じエラーを再現できます。
//hello.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello world!\n" << endl;
    return 0;
}
これは、-mno-cygwin が付いたときにどのディレクトリにある標準ライブラリを参照するべきであるかをシステム (cygwin) は正しく知っているはずなのに、-I/usr/include をつけてしまったためにそちらが優先され、結果誤ったファイルがインクルードされてしまっているものと思われます。

解決方法としてお勧めするのは、前述のように、fgcom が必要とする外部プログラムのファイルをシステムディレクトリ以外の場所に配置することです。
それに合わせて、fgcom の Makefile の中で、OPENAL_PREFIX や PLIB_PREFIX を openal と plib の .hファイルの場所にそれぞれ修正し、また LDFLAGS を使って plib と openal の ライブラリファイルの正しい場所をコンパイラに教えてあげるが良いのではないかと思います。

以上は、安定して動く fgcom を作成することをゴールとするなら、ほんのはじめの一歩であることを覚悟したほうが良いでしょう。
仮に fgcom がうまくコンパイルできるようになったとしても、従来版と何ら変わりない状況が予想されます。
その後、音が安定して聞こえるようにするためには、fgcom とその周辺のプログラムをいじくる必要性が生じることが考えられます。
投票数:18 平均点:5.00

投稿ツリー

  条件検索へ


 検索

高度な検索
 新しい登録ユーザ
ahaxyqy 2023-10-1
awonic 2023-10-1
ewogaxik 2023-10-1
iputa 2023-10-1
iravagut 2023-10-1
uwubyzaqe 2023-10-1
iwukixih 2023-10-1
ivyxyb 2023-10-1
kinogoga 2023-10-1
ahevesor 2023-9-30
 最近の画像(画像付)
自作11機目 F/A-18... (2022-5-27)
自作11機目 F/A-18...
飛んでみる八尾空港 (2022-4-10)
飛んでみる八尾空港
作ってみる八尾空港 (2022-4-2)
作ってみる八尾空港
F117 nighthawk (2021-5-19)
F117 nighthawk
HiTouchさん宛の画像... (2020-11-8)
HiTouchさん宛の画像...
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Theme designed by OCEAN-NET