2017-06-19 17 views
1

私はmakeを使用してC++プログラムをコンパイルしていますが、これは私が得ているエラーです。fglut/libfglut.a(freeglut_state.o):シンボル 'XGetWindowAttributes'への未定義参照

/usr/bin/ld: fglut/libfglut.a(freeglut_state.o): undefined reference to symbol 'XGetWindowAttributes'

//usr/lib/i386-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

Makefile:55: recipe for target 'morphlines' failed

make: *** [morphlines] Error 1

私は(*.aは単にオブジェクトファイルのアーカイブである)これは静的にリンクしますlibfglut私に語っ

答えて

2

/usr/bin/ld: fglut/libfglut.a(freeglut_state.o):

初心者です。これを行うと、のすべての依存関係もリンクする必要があります。静的ライブラリのオブジェクトファイルが実際にプログラムにコンパイルされるため、プログラムは依存します。

どちらかのリンクを動的libfglut(これはGNUツールチェーンとのデフォルトである)ので、あなたのプログラム自体がlibX11.soに依存しているlibfglut.soに依存します - またはあなたの最後のリンクステップのコマンドラインで-lfglut-lX11を追加。リンカーをダイナミックリンクに戻すには、-Wl,-Bdynamic-lX11より前に必要な場合があります。

これで問題が直接解決されない場合は、ご使​​用のMakefileの関連部分を含めるように質問を編集することをおすすめします。

関連する問題