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

Manjaro下VSCode编译C++ gtkmm4.0程序提示无法打开gtkmm.h

Manjaro 环境 gtkmm-4.0 头文件存在但编译报错解决

问题复现

  • 系统环境:Manjaro Linux,开发工具为Visual Studio Code
  • 已操作:安装gtkmm-4.0包及对应开发文档,确认/usr/include/路径下所有gtkmm相关头文件完整存在
  • 报错信息:编译时抛出头文件找不到错误
    cannot open source file "gtkmm.h"
    gtkmm.h: No such file or directory
    
  • 测试用代码:
    #include <gtkmm.h>
    #include <iostream>
    
    int main(int argc, char* argv[]){
        return 0;
    }
    
  • 最初使用的Makefile构建配置:
    exec = game.out
    sources = $(wildcard src/*.cpp)
    objects = $(sources:.cpp=.o)
    flags = -g $(shell pkg-config gtkmm-4.0 --cflags)
    libs = $(shell pkg-config gtkmm-4.0 --libs)
    
    
    $(exec): $(objects)
        g++ $(objects) $(flags) -o $(exec) $(libs)
    
    %.o: %.cpp include/%.h
        g++ -c $(flags) $< -o $@
    
    install:
        make
        cp ./game.out /usr/local/bin/game
    
    clean:
        -rm *.out 
        -rm *.o
        -rm src/*.o
    

检索到的公开方案多针对其他发行版或开发环境,无法解决当前场景下的报错。

解决方法

问题根源是g++编译参数顺序不符合要求,头文件搜索路径、链接库参数没有正确传递给编译流程。在@Galik和@John的协助下,使用以下编译命令即可正常完成编译,生成的可执行文件可直接运行:

g++ src/main.cpp -o main $(pkg-config gtkmm-4.0 --cflags --libs)

补充说明:g++对编译参数顺序有严格要求,源文件需要放在编译参数靠前位置,pkg-config导出的头文件搜索路径、链接库参数需要放在源文件之后,顺序错误会导致头文件搜索路径、链接库配置不生效,触发找不到头文件、链接失败类错误。如果需要继续使用Makefile构建,参照上述参数顺序调整编译指令、修正目标文件依赖规则即可。


内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:12:21