我正在尝试在 Linux 上构建一个小型 Qt (C++) GUI 应用程序,但由于大量链接器错误而无法构建,并抱怨我正在链接的 Qt 库缺少依赖项。我在 Qt 库上使用了 ldd 来验证这些库是否确实存在——它们确实存在。
我的问题似乎与此线程中的讨论有关: Linking dependencies of a shared library 虽然该线程帮助我确定了我的确切问题,但似乎该线程的结论是我的应用程序应该链接!
应用程序使用以下命令编译:
g++ -m64 -Wl,-O1 -o Executable some-object.o some-other-object.o -lQtCore -lQtGui -lQtXml -L/usr/lib64 -L/usr/X11R6/lib64 -lpthread
运行此程序会生成以下形式的警告,并且链接最终会因未定义的引用错误而失败(指向“缺失”库中定义的符号):
.../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 Distro (openSuse 12.2),没有任何麻烦。包括 Qt 在内的所有库都是从发行版存储库安装的。
我认为这可能是我的 openSuse 安装中的某种设置问题,但我不知道从哪里开始寻找解决这个问题。
干杯,克雷格