我用C++编写了一个非常简单的可执行文件,它使用opencv和gtk3一起加载jpeg格式的映像,并显示它,当我没有sudo运行它时,我得到了错误:
Gtk-WARNING **: 21:58:36.172: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Fatal error reading PNG image file: Invalid IHDR data (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Fatal error reading PNG image file: Invalid IHDR data (gdk-pixbuf-error-quark, 0)
[1] 6329 IOT instruction ./main
但如果我和sudo一起运行,一切都正常。我四处搜索并尝试了我在网上找到的所有建议命令,包括:
sudo apt reinstall libgdk-pixbuf2.0-0
sudo /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders --update-cache
sudo update-mime-database /usr/share/mime
sudo chmod -R uga-x /usr/share/mime; sudo chmod -R uga+X /usr/share/mime
以上没有一个工作,我也重新启动系统后,运行所有的步骤,仍然不工作,需要帮助。
我在Ubuntu18.04上,在WSL2中,我还在WSL2中测试了一个新安装的ubuntu20.04中的二进制文件,同样的事情也发生了。源代码和二进制文件可以在https://github.com/shelper/vscode_cpp_cmake_示例/发布/标记/测试下载。
发布于 2022-12-11 03:08:41
我在https://devforum.play.date/t/segmentation-fault-running-playdatesimulator-on-linux/3360/4上找到了这篇文章,然后我尝试了sed -i s/png_/PNG_/g ./main
,我在说undefined symbol: G_free
时出错了。然后重新构建二进制文件并运行sed -i s/png_/PNg_/g ./main
,现在一切都正常了。我相信这是因为我用来构建OpenCV的GTK-3dev包与我的系统中的包具有ABI兼容性。但是,我不明白为什么sudo
能够毫无问题地运行二进制文件。
https://askubuntu.com/questions/1444897
复制相似问题