リンク順を確認しましたか?これは、最近のバージョンの GCC ではより厳しくなっています。
たとえば、これを行うと、一般的な問題が発生します。
g++ -lX11 -lSuperLibrary awesomeApp.cpp
これの代わりに:
g++ awesomeApp.cpp -lX11 -lSuperLibrary
ライブラリフラグが相互に依存している場合、それらの順序も重要です。
あなたの問題を解決するのに役立つかもしれないライブラリマルチパスを行うためのフラグがあります。上記と同じが、リンカーの「グループ化」ライブラリを使用し、それらに再帰リンクを実行する(リンカーのパフォーマンスコストで)、次のようなことを行うことができます。
g++ awesomeApp.cpp -Wl,--start-group -lX11 -lSuperLibrary -Wl,--end-group
-Wl,<option>リンカーにオプションを渡す場所...この場合--start-groupと--end-group.
リンクの順序が重要である理由の素晴らしいアナロジーはここにあります
それが役立つことを願っています。