0

PGI Compiler バイナリを既存の GNU バイナリにリンクする方法はありますか? リンクしようとすると、次のエラーが表示されます。

oacc.c.o:(.init+0x8): undefined reference to `__pgio_ini'
collect2: ld returned 1 exit status

詳細:

gcc と g++ でいくつかのファイルをコンパイルしました。Cmain関数はこれらのファイルに含まれています。ここで、OpenACC 関数をプロジェクトに追加する必要があります。これは、PGI C コンパイラ ( pgcc) によってコンパイルする必要があります。コンパイル後、上記のリンク エラーが発生します (エラーは両方pgCCまたはg++リンカーと同じです)。

おそらく、OpenACC 関数をダミー ライブラリに統合し、それをプロジェクトにインクルード/リンクする必要があります。しかし、私はそれを行う方法がわかりません。

残念ながら、一部の関数は GNU Compiler に依存しているため、プロジェクト全体を PGI Compiler でコンパイルすることはできません。

前もって感謝します。

4

1 に答える 1

1

GCC ベースの GNU ツールチェーンの新しいバージョンでは、リンクするファイル (オブジェクト ファイルと静的および動的ライブラリ) を、シンボルが相互に依存する順序で指定する必要があります。したがって、外部ライブラリのリンカー フラグを最後のパラメーターとして配置する必要があります。

gcc -o prog prog.o -lfoo

は正しいですが、

gcc -o prog -lfoo prog.o

リンカー エラーが発生します。

于 2012-10-21T12:52:41.713 に答える