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

编译多天体历计算命令行工具时遭遇mkfifo与-fopenmp错误求助

解决多天体历命令行工具编译的两个环境问题(WSL + macOS)

看起来你和团队在完成结业项目时遇到了两个不同环境的编译阻碍,我来一步步帮你拆解解决:


一、Windows WSL环境的mkfifo错误问题

问题根源

你碰到的mkfifo: cannot create fifo 'stderr': Operation not supported错误,核心原因是项目放在了挂载的Windows NTFS分区(比如你的/mnt/d/reboot/...路径)。NTFS文件系统不支持POSIX标准的命名管道(FIFO),而prettymake脚本里尝试创建名为stderr的FIFO来捕获编译错误,自然会失败。

可选解决方案

方案1:把项目迁移到WSL原生文件系统

WSL的原生目录(比如~/,对应Windows侧的\\wsl$\Ubuntu\home\你的用户名)是ext4格式,完全支持POSIX特性。执行以下步骤:

# 复制项目到WSL主目录
cp -r /mnt/d/reboot/ephemeris-compute-de430 ~/
# 进入新的项目目录
cd ~/ephemeris-compute-de430
# 重新执行安装编译脚本
./setup.sh

方案2:修改prettymake脚本,移除FIFO依赖

原prettymake里的sed命令其实只是原样输出内容,没有做任何实际修改,完全可以简化成不需要FIFO的版本。打开prettymake文件,替换成以下内容:

make "$@" 2>&1 | sed 's/\(.*\)/\1/'

这个命令直接把标准错误重定向到标准输出,再通过sed(保留原脚本结构),彻底避开了创建FIFO的步骤,在NTFS分区也能正常运行。


二、macOS环境的-fopenmp编译错误问题

问题根源

macOS默认自带的Clang编译器不支持OpenMP(-fopenmp是OpenMP并行编译的专属选项),所以编译时会抛出clang: error: unsupported option '-fopenmp'的错误。

解决方案

需要安装支持OpenMP的Clang版本,推荐用Homebrew安装LLVM:

  1. 先安装Homebrew(如果还没安装):
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. 安装包含OpenMP支持的LLVM:
    brew install llvm
    
  3. 在执行编译前,临时指定编译器为LLVM的Clang:
    export CC=/usr/local/opt/llvm/bin/clang
    export CXX=/usr/local/opt/llvm/bin/clang++
    # 然后执行编译命令
    ./prettymake
    
    或者直接在命令行里一次性指定:
    CC=/usr/local/opt/llvm/bin/clang ./prettymake
    

通用优化建议:直接使用原生Makefile

既然项目已经附带了标准Makefile,其实可以跳过prettymake,直接执行make命令,这样能避开prettymake带来的额外问题:

# 如果setup.sh的下载步骤已经完成,可跳过这一步
./setup.sh
# 直接用原生make编译
make

另外提醒:完全不需要用sudo ./setup执行编译操作,管理员权限不仅没必要,还可能导致文件权限混乱,后续更难排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:57:33