You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ubuntu 23.10上编译Libadwaita、GTK4与C代码时出现未定义引用错误的求助

在Ubuntu 23.10上编译Libadwaita、GTK4与C代码时出现未定义引用错误的求助

看起来你遇到的是典型的链接器未定义引用问题,我帮你梳理下可能的原因和解决办法:

  • 检查pkg-config参数的拼写错误:你的编译命令里pkg-config –-cflags用了中文的长破折号,这会导致pkg-config无法正确识别参数,没办法输出正确的编译和链接选项。要改成英文的两个短横:--cflags。

  • 调整编译命令的参数顺序:GCC对参数顺序是有要求的,源文件必须放在链接库参数的前面。你原来的命令把源文件hello-adwita.c放在最后,链接器处理库的时候还没看到需要这些符号的目标文件,就不会把库中的对应符号包含进去,最终导致未定义引用错误。

正确的编译命令可以写成两种形式,选一种就行:

# 分开调用pkg-config(清晰明了)
gcc hello-adwita.c $(pkg-config --cflags gtk4 libadwaita-1) $(pkg-config --libs gtk4 libadwaita-1) -o hello

或者合并pkg-config的调用,更简洁:

gcc hello-adwita.c $(pkg-config --cflags --libs gtk4 libadwaita-1) -o hello

另外,保险起见可以确认下依赖是否都安装完整,虽然你已经装了libadwaita-1-dev,但可以再补装GTK4的开发包:

sudo apt install libgtk-4-dev libadwaita-1-dev

按照上面的步骤调整后,应该就能正常编译了。

备注:内容来源于stack exchange,提问作者Holger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:08:53