不创建符号链接构建Formula:安装修改版MPI版HDF5可行吗?
可行!实现带MPI支持的自定义HDF5编译且不链接
当然可以做到!Homebrew本身就提供了灵活的机制来编译自定义修改的Formula,并且支持仅将产物存放在/usr/local/Cellar目录、不创建系统级链接的操作,下面是具体的实现步骤:
1. 获取并修改HDF5 Formula
首先你需要拿到HDF5的原始Formula,添加回已移除的MPI支持选项:
- 先把官方Formula导出到本地文件,方便安全修改:
brew cat hdf5 > hdf5-custom.rb - 打开这个本地文件进行编辑,补充MPI相关配置:
- 在Formula开头添加MPI启用选项:
option "with-mpi", "Build with MPI support" - 添加MPI依赖(仅当启用选项时生效):
depends_on "open-mpi" => :optional - 在
def install代码块中,根据选项添加编译参数(HDF5启用MPI通常需要--enable-parallel,同时指定MPI编译器):args = %W[ --prefix=#{prefix} --enable-threadsafe --enable-unsupported ] if with?("mpi") args << "--enable-parallel" ENV.append "CC", "mpicc" ENV.append "CXX", "mpicxx" end system "./configure", *args system "make", "install"
- 在Formula开头添加MPI启用选项:
2. 编译安装且跳过系统链接
使用Homebrew的--no-link参数来避免在/usr/local下创建系统级链接,同时指定从本地修改的Formula编译:
brew install --build-from-source --no-link ./hdf5-custom.rb --with-mpi
如果是临时修改了Homebrew默认的Formula(不推荐,容易被后续更新覆盖),也可以直接运行:
brew install --build-from-source --no-link hdf5 --with-mpi
3. 验证安装结果
安装完成后,你可以检查/usr/local/Cellar/hdf5目录,会出现一个带版本号的子目录,里面包含所有编译好的库文件、头文件和二进制程序。此时/usr/local/bin、/usr/local/lib等系统级目录不会出现HDF5的链接文件,完全符合你的需求。
额外注意事项
- 后续使用这个自定义HDF5库时,需要手动指定路径,比如编译依赖HDF5的软件时:
./configure --with-hdf5=/usr/local/Cellar/hdf5/<你的版本号> - 这个自定义版本不会被Homebrew的常规更新影响,因为它没有链接到系统路径,也不会和官方HDF5版本产生冲突。
- 如果后续需要清理这个版本,直接删除
/usr/local/Cellar/hdf5/<你的版本号>目录即可。
内容的提问来源于stack exchange,提问作者bibi
相关产品推荐
相关产品推荐

