I am trying to build a small Qt (C++) GUI application on Linux but it fails to build with numerous linker errors, complaining about missing dependencies for the Qt library I am linking against. I used ldd on the Qt libraries to verify that the libraries are indeed there - and they are.
My problem seems to be related to the discussion in this thread: Linking dependencies of a shared library And while that thread helped me identify my precise problem, it seems that the conclusion of that thread was that my application should link!
The application is compiled with the following command:
g++ -m64 -Wl,-O1 -o Executable some-object.o some-other-object.o -lQtCore -lQtGui -lQtXml -L/usr/lib64 -L/usr/X11R6/lib64 -lpthread
Running this generates warnings of the following form, and linking eventually fails with undefined reference errors (to symbols defined in the 'missing' libraries):
.../ld: warning: libglib-2.0.so.0, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libpng14.so.14, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libz.so.1, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libfreetype.so.6, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
など (全部で 18 個の依存関係が見つかりませんでした。)
-lglib、-lpng14、-lz -lfreetype などを明示的に追加すると、これをコンパイルできますが、前述したように、18 の依存関係があります。しなくてもいいようにも思えます。
まったく同じ Linux ディストリビューション (openSuse 12.2) を問題なく使用するラップトップ コンピューターで同じプロジェクトをコンパイルしました。Qt を含むすべてのライブラリは、ディストリビューション リポジトリからインストールされました。
これは、私の openSuse のインストールで何らかの設定上の問題が発生した可能性があると思いますが、これを修正するためにどこから始めればよいかわかりません。
乾杯、クレイグ