未定义的符号:polkit_unix_process_new 在 i386 平台上

undefined symbol: polkit_unix_process_new on i386 platform

我正在打包一个在 i386amd64

上都使用 polkit 的 debian vala 应用程序

我用 debuild 构建了我的 .deb 文件并且打包顺利。

两个平台上的安装也很好。虽然在 amd64 上一切正常,但应用程序无法在 i386 上启动并出现以下错误:

undefined symbol: polkit_unix_process_new

我尝试安装 libpolkit-gobject-1-dev 以防万一这是一个缺失的依赖项,但它不会改变任何事情。

以下是 debian 控制文件的副本,以防相关:

Source: elementary-tweaks
Section: x11
Priority: optional
Maintainer: Michael P. Starkweather <mpstark@gmail.com>
Build-Depends: cmake (>= 2.8),
               debhelper (>= 9),
               libgranite-dev,
               libgtk-3-dev (>= 3.10),
               libglib2.0-dev,
               libgee-0.8-dev,
               libgconf2-dev,
               libswitchboard-2.0-dev,
               libpolkit-gobject-1-dev,
               valac (>= 0.22)
Standards-Version: 3.9.5
Homepage: https://launchpad.net/elementarytweak

Package: elementary-tweaks
Architecture: any
Depends: gala, plank, slingshot-launcher, ${misc:Depends}, ${shlibs:Depends}
Pre-Depends: dpkg (>= 1.15.6)
Recommends: plank
Enhances: switchboard
Description: Change hidden desktop settings
 Switchboard plug for controlling hidden options.

Package: elementary-tweaks-dbg
Architecture: any
Section: debug
Priority: extra
Depends: elementary-tweaks (= ${binary:Version}), ${misc:Depends}
Pre-Depends: dpkg (>= 1.15.6)
Enhances: elementary-tweaks
Description: Change hidden desktop settings (debugging symbols)
 Switchboard plug for controlling hidden options.
 .
 This package contains debugging symbols for switchboard-plug-template.

应用的完整代码源可以找到here

edit 当我在 i386 平台上构建应用程序时,编译和链接运行正常但无法启动并出现相同的错误,因此这不一定是打包错误...

好的,这个错误是一个简单的 cmake 错误,但在维护应用程序时不一定容易发现。

似乎 amd64 足够慷慨地让构建错误滑动但不是 i386

问题出在 cmake 文件中,其中库 polkit-gobject-1pkg_check_modules 子句中丢失 并且 添加了包含文件手动 不是 link 到共享库。

错误的 cmake 片段:

pkg_check_modules (DEPS REQUIRED gthread-2.0 gtk+-3.0 switchboard-2.0 granite gconf-2.0 gee-0.8 glib-2.0)

add_definitions (${DEPS_CFLAGS} -I/usr/include/polkit-1) 
add_definitions (${DEPS_CFLAGS})
link_libraries (${DEPS_LIBRARIES})
link_directories (${DEPS_LIBRARY_DIRS})

正确的 cmake 片段:

pkg_check_modules (DEPS REQUIRED gthread-2.0 gtk+-3.0 switchboard-2.0 granite gconf-2.0 gee-0.8 polkit-gobject-1 glib-2.0)

add_definitions (${DEPS_CFLAGS})
link_libraries (${DEPS_LIBRARIES})
link_directories (${DEPS_LIBRARY_DIRS})