Homebrew 采用不同的 arch 构建?

Homebrew 采用不同的 arch 构建?

我尝试通过 homebrew 安装 mysql-connector-c 配方,并且它构建得很好,但产生了 x86_64 库:

  $file ~/brew/lib/libmysql.dylib 
  .../brew/lib/libmysql.dylib: Mach-O 64-bit dynamically linked shared library x86_64

但是我的项目需要 i386 库。我尝试给它 CFLAGS 和 LDFLAGS,如下所示:

  CFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64" brew install mysql-connector-c

但没有任何变化 - 它仍然只构建 x86_64 二进制文件。有没有办法让自制软件构建双架构库或 i386 库?如果重要的话,我将内核架构设置为 x86_64。

答案1

您可以尝试以下方法:

brew edit mysql-connector-c

然后修改“安装”块中的初始化。

虽然我没有尝试过,但你应该做这样的事情:

ENV['CFLAGS']='xxx'
ENV['LDFLAGS']='xxx'

您可以查看此处的示例:自制软件出现问题,无法安装任何东西......

答案2

安装 DevIL 时遇到类似问题。看来 Homebrew 正在尝试清理传递给工具的命令行参数,至少在 ML 上是这样:

$ brew install -v devil
...
brew: superenv removed: -arch i386
...

我可以像 Walty 的答案中那样编辑公式来指定 CFLAGS 和 CXXFLAGS,但是使用标准环境运行安装:

$ brew install --env=std devil

答案3

一些公式具有通用选项,可让您同时为 i386 和 x86_64 进行编译:

$ brew options sdl
--universal
        Build a universal binary

没有mysql-connector-c提供这个选项,但我发现将该选项添加到我正在研究的另一个公式中非常容易:https://github.com/mxcl/homebrew/pull/18713/files

相关内容