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

Cabal使用inline-c调用C代码执行install时找不到C头文件问题求助

配置错误点

  • includes 字段填写错误:你已经通过 include-dirs 声明了 cbits 作为头文件搜索目录,includes 只需填写头文件名本身即可。你写了 cbits/genann.h 会导致Cabal拼接路径后去搜索 cbits/cbits/genann.h,自然找不到对应文件。
  • install-includes 字段用错场景:该字段是针对库(Library)段的配置,用于声明库安装时需要同步安装到系统头文件路径的头文件,放在可执行文件(Executable)段下不会生效,可执行文件本身也不需要安装头文件到系统路径。
  • 头文件未被声明为额外源文件:cbits/genann.h 没有加入 extra-source-files 配置,cabal 打包安装时不会把这个头文件纳入安装流程,inline-c 编译期加载头文件时就会报错。

修复后的配置调整

  1. 全局的 extra-source-files 补充头文件路径:
extra-source-files: CHANGELOG.md
                  , cbits/genann.h
  1. 调整Executable段的相关配置,删除无效的install-includes行:
include-dirs:     cbits
                , /usr/local/include
includes:         genann.h
c-sources:        cbits/genann.c 

你不需要把C代码编译为目标文件放到系统路径,原来的 c-sources 配置是正确的,Cabal 会自动把 genann.c 和 Haskell 代码一起编译、链接到最终的可执行文件中,不需要单独处理C代码的安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:00