错误"您是否使用-rdynamic进行编译?"仅在使用RPM安装应用程序时才能看到

时间:2018-03-28 23:25:48

标签: gtk gtk3 glib vala

我有一个Vala应用程序只加载gmodule-2.0模块,当通过通常make install安装时,一切正常。当我构建一个RPM文件并使用dnf install my-app安装(在Fedora 27上)时,我得到了一大堆错误,比如

(my-app:15094): Gtk-WARNING **: Could not find signal handler 'btn_thing_changed_cb'.  Did you compile with -rdynamic?

(my-app:15094): Gtk-WARNING **: Could not find signal handler 'adj_thing_value_changed_cb'.  Did you compile with -rdynamic?

即使我将-rdynamic添加到构建并重新安装后,我仍然会看到这些错误。在某处我读到我需要使用gmodule-export-2.0,但是pkgconfig上的差异和gmodule-2.0的差异表明它们完全相同。 SOOOO ...

应用程序是用Vala编写的,使用valac构建。另外,我所拥有的UI类是Gtk模板类,这可能是一个问题,但是当我从源代码安装它时它工作的事实让我觉得它不是。

1 个答案:

答案 0 :(得分:0)

这是因为默认的RPM构建将从可执行文件中删除符号。您可以通过更改spec文件来禁用剥离:

%global __os_install_post %{nil}

或:

 %global __strip /bin/true