0

osxでリンカーエラーが発生する(同じコードでLinuxまたはfbsdでエラーが発生しない):

ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o

エラーにリストされている2つのライブラリは私のものですが、シンボルはそうではありません。c ++ flintは、「_ dbg_char」が両方のライブラリにあることを確認しますが、それがどこから来ているのかわかりません。

_dbg_charを特定する方法についてのトリック、戦略、完全な回答をいただければ幸いです。

プロジェクトはlibtool/autotoolsとgcc4.01を使用しています

4

2 に答える 2

1

''によってdbg_charを定義していたロギング/デバッグマクロが見つかりましたdbg_ ## t。修正はそれを静的にすることでした。学んだ教訓:

  1. osxは、シンボル名に先頭の_を追加します。Linuxでnmを実行し、先頭に_がない同じ記号が表示されるまで、コードベースで「dbg_」ではなく「 _dbg_」を検索しようと考えました。
  2. osxは文句を言うのが正しかった
  3. 完全に理解していなかったデバッグマクロをカットアンドペーストすることは、私に多くの問題を引き起こしました。
于 2009-08-02T01:31:06.587 に答える
0

両方のライブラリが、キーワード#includeを宣言しているが欠落しているヘッダーファイルであるかどうかを確認することをお勧めします。たぶんそれは他のプラットフォームでは解決されているので、OSXでのみその問題が発生します。_dbg_charextern#ifdef

于 2009-07-13T08:30:16.200 に答える