2011-08-05 5 views
0

AIX 5.3でコンパイルされた実行可能ファイルまたは共有ライブラリのobjdumpを実行しようとすると、このエラーメッセージが何度も表示されます。このマシン上の他の実行可能ファイルに対してはうまく動作します。 この実行可能ファイルは、実行時に(文字列の割り当て時に)クラッシュします。".textシンボル` ._XXXXXXXXX "の認識できないストレージクラス111とはどういう意味ですか?

私はそれが重要なのかどうかわからないんだけど、リンク時に、私はのようないくつかの警告があります: LD:0711から224 WARNING:重複記号:XYZへの非仮想サンク::〜XYZ() 全体実行可能であるが.oファイル(と1つの外部ライブラリから直接ビルドしますが、それは問題ありません)。

弱い記号に接続することができますが、その問題の解決方法はわかりません。 何が間違っている可能性がありますか、これを続行するために何を確認できますか?

また、すべてのcppファイルを1つの大きなファイルに含めて、これをコンパイルしようとしました。私はまだセグメンテーションフォルトを取得しますが、他の場所(現在はg_strXXXXX.erase() - グローバルストリングの消去)にあります。スタックトレースの 一部は次のようになります。

(...)

__static_initialization_and_destruction_0第3位0x101d8534(int型、int型)(__initialize_p = 1、__priority = 65535)../../licserverで/someclass1.cpp:4

GLOBAL _FI_licserver_unittestで../../shared/someclass1.cpp:225

。#5 0x103c81fcでGLOBAL _I_fc_softc()における#4 0x101d8df0()

。#/usr/lib/libc.a(shr.oから/usr/lib/libc.a(shr.oからmod_init1())__modinitで

。#7 0xd03aacc4()6 0xd03aadb0 )

__startインチ#8 0x100001d4() (GDB)GLOBAL _I_fc_softc

ので、libcのかのlibstdC++といくつかの問題のように見えますか?

+0

あなたのコードにはほとんど問題はありません。しかし、コードを投稿しない場合は、手助けするのは非常に難しいです。スタックトレースを考えると、グローバル変数が初期化される順序と関係する可能性がありますが、実際には分かりにくいです。コードを投稿してください! – john

+0

Unlucky 2つの理由のためにコードを投稿できません:クローズドソースで、〜300MBのようなものです;)しかし、私はそれがすべてのwindowses、linuxes、HP_UX、MacOS、FreeBSD上で正しく動作するそれはコードの問題です。むしろAIXのリンカまたは何か... –

+0

異なるソースファイルで定義されたグローバル変数を持っていますか?それらは異なるリンカーで異なる順序で初期化されます。これは、あるプラットフォームから別のプラットフォームに移動する際の一般的なバグの原因です。 – john

答えて

0

あなたは実際に正しいジョンでした、ありがとうございました! 私のコードに「静的初期化命令の失敗」という問題がありました。 疑わしいグローバルオブジェクトをすべて関数呼び出しに置き換えた後、問題が解決されたようです。

CFoo g_F; 

へ:

は、だから私は変更

CFoo& GetF() { 
    static CFoo F; 
    return F; 
} 

そして、それは今も元気です。この部分のコードでは、マルチスレッドのサポートは必要ありませんでした。それ以外の場合は、シングルトンを使用します(グローバル変数を削除するにはコードが多すぎます)。

関連する問題