我正在尝试构建具有对 QDoc 和 Qt 语言学家的 clang 支持的 qt 工具。
它构建得很好,但是,在运行 dh_shlibdeps 时,会出现以下错误:
dpkg-shlibdeps: error: no dependency information found for /usr/lib/llvm-11/lib/libLLVM-11.so.1 (used by debian/qt-android-6.2-host/usr/lib/qt-android-6.2-host/bin/lupdate)
我猜二进制文件(lupdate)不应该链接到 /usr/lib/llvm-11/lib/libLLVM-11.so.1 (由 llvm-11-dev 包提供),而是链接到 /usr/lib/x86_64-linux -gnu/libLLVM-11.so(由 libllvm11 包提供)
llvm-config --libdir 返回
/usr/lib/llvm-11/lib
跑的时候一样dpkg-architecture -c llvm-config --libdir
我想这就是它在那里搜索图书馆的原因。
我可以将这一行添加到 debian/shlibs.local,但这意味着使二进制包依赖于一个非常大的包,而我只需要 libllvm11。
libLLVM-11 1 llvm-11-dev
更新:我libLLVM-11 1 libllvm11
最后使用的是小于 llvm-11-dev 的。
我必须遗漏一些东西才能让它工作。将其链接到的正确方法是什么/usr/lib/x86_64-linux-gnu/libLLVM-11.so
?
顺便说一句,/var/lib/dpkg/info/libllvm11 包含:
amd64.shlibs:libLLVM-11 1 libllvm11 (>= 1:9~svn298832-1~)
在 build.ninja 文件中,有这个
LINK_LIBRARIES = -Wl,-rpath,"\$$ORIGIN/../lib:/usr/lib/llvm-11/lib:" qtbase/lib/libQt6QmlDevTools.a qtbase/lib/libQt6Core.so.6.2.0 /usr/lib/llvm-11/lib/libclang-11.so.1 /usr/lib/llvm-11/lib/libclang-cpp.so.11 /usr/lib/llvm-11/lib/libLLVM-11.so.1 -lpthread
的输出dpkg-shlibdeps -v debian/qt-android-6.2-host/usr/lib/qt-android-6.2-host/bin/lupdate
dpkg-shlibdeps: debug: >> Scanning debian/qt-android-6.2-host/usr/lib/qt-android-6.2-host/bin/lupdate (for Depends field)
dpkg-shlibdeps: debug: Library libLLVM-11.so.1 found in /usr/lib/llvm-11/lib/libLLVM-11.so.1
dpkg-shlibdeps: debug: Library libLLVM-11.so.1 found in /usr/lib/x86_64-linux-gnu/libLLVM-11.so.1
dpkg-shlibdeps: debug: Using shlibs+objdump for libLLVM-11.so.1 (file /usr/lib/llvm-11/lib/libLLVM-11.so.1)
dpkg-shlibdeps: debug: Looking up shlibs dependency of libLLVM-11.so.1 provided by 'llvm-11-dev'
dpkg-shlibdeps: debug: Found nothing
dpkg-shlibdeps: debug: No shlibs+objdump info available, trying next package for /usr/lib/llvm-11/lib/libLLVM-11.so.1
dpkg-shlibdeps: error: no dependency information found for /usr/lib/llvm-11/lib/libLLVM-11.so.1 (used by debian/qt-android-6.2-host/usr/lib/qt-android-6.2-host/bin/lupdate)
Hint: check if the library actually comes from a package.