0

AIX 7.1 で ncurses ライブラリを使用して、AIX の標準である curses ライブラリに含まれていないパネルを使用しようとしています。ncurses ライブラリがインストールされています。xlc ngoodbye.c -lncurses 実際の ncurses ライブラリは libncurses.a で、静的ライブラリであると理解しています。ただし、実行可能ファイルを別の AIX ホストに移動して実行すると、「依存モジュール libncurses.a(libncurses.so.5) をロードできませんでした」というメッセージが表示されます。モジュール libncurses.a(libncurses.so.5) をロードできませんでした。システム エラー: そのようなファイルまたはディレクトリはありません。

ncurses ライブラリがインストールされていない他のホストでプログラムが実行されるように、ncurses ライブラリをリンクするにはどうすればよいですか? gcc ではなく、AIX で xlc を使用していることに注意してください。-bstatic を試しましたが、コンパイル時にリンク エラーが発生します。私は開発者ではないため、この分野での経験は限られていることに注意してください。ありがとう。

4

2 に答える 2

0

AIX の静的ライブラリと共有ライブラリはどちらも、位置非依存 (PIC) として構築されています。したがって、「共有」ライブラリでさえ、実行可能ファイルに静的にバインドできます。-bstatic で正しい軌道に乗っていました。リンクしている残りのライブラリの動的バインディングに戻す必要があります。

だからあなたの最終的なリンクのためにこれを試してください:

xlc -o myexe myexe.o <other objects as needed> -bstatic -lncurses -bdynamic -lm <and other other libraries as needed>

本番環境が開発環境と一致することを確認するために、これを常に行っています。

于 2015-04-16T16:22:03.787 に答える