我正在尝试将带有用户界面的程序编译为 .out 文件。我以前用同样的方式编译它,我没有编辑代码,使用这个
`pkg-config --cflags --libs gtk+-2.0`
回到 16.04,代码编译成一个应用程序,我可以双击并启动该应用程序。这一次,我不能。当我双击时,它试图用空地打开并显示错误。出于某种原因,编译器或系统认为该文件应该是共享库。我怎么能说它是一个应用程序?我必须像非 gtk 编译的 C 文件一样在终端中执行它。
如何在 18.04 上将其编译为应用程序?
从 gcc-6.2 开始,Ubuntu 中的 gcc 配置了 --enable-default-pie 选项(位置独立可执行文件),这就是它是共享对象的原因。(- LSB 共享对象
对此的编译器覆盖是-fno-pie
,链接器覆盖是-no-pie
显然,对于 a.out 文件,您只需要应用链接器 -no-pie,尽管这两个选项也可以一起使用。
另外一个因素可能是您的文件管理器,有些将允许将共享对象标记和运行为 exectubale。Nautilus 没有了。(nemo 有
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句