架构与Cabal:如何在构建时指定目标架构?
Cabal 指定架构的实现方式
Cabal没有像Stack那样提供直接的
--arch参数,要指定编译架构主要有两种办法:- 直接指定对应架构的GHC编译器:使用
cabal build --with-compiler=具体架构的GHC名称,比如x86_64架构的GHC可能叫ghc-x86_64(不同系统命名有区别,比如macOS上是ghc-x86_64-apple-darwin),直接指定这个编译器就能生成对应架构的编译产物。 - 设置环境变量:先通过
export CABAL_BUILD_ARCH=目标架构(比如x86_64)配置环境变量,再运行cabal build,Cabal会自动套用该架构的编译参数。
- 直接指定对应架构的GHC编译器:使用
关于Stack的机制:你猜的没错,Stack本质就是个协调器,它会自动找到对应架构的GHC,然后给底层调用的Cabal传递
--with-compiler这类参数来实现架构切换,相当于把手动操作的步骤自动化了。
内容的提问来源于stack exchange,提问作者RandomB
相关产品推荐
相关产品推荐

