Saki's 研究记录

Mac OSX下执行crosstool-ng问题记录

字数统计: 626阅读时长: 2 min
2022/01/22

环境

系统:MacOS Big Sur 11.6.1

ct-ng:GNU Make 4.3 / Built for x86_64-apple-darwin20.1.0

前言

Mac下面使用HomeBrew安装了crosstool-ng来编译aarch64上的代码,结果在执行的时候报告如下错误:

1
2
3
4
5
ct-ng source
[INFO ] Performing some trivial sanity checks
[WARN ] Number of open files 256 may not be sufficient to build the toolchain; increasing to 2048
[ERROR] Your file system in '/Users/sakishum/data/work/xma/aarch64/.build' is *not* case-sensitive!
[ERROR]

遇到的问题

Number of open files 256 may not be sufficient to build the toolchain; increasing to 2048

问题原因

问题提示的字面意思

解决办法

编译目录下执行命令:

1
2
# That should increase your soft limit for open files (-n) to 4096.
ulimit -S -n 4096

Your file system in ‘/Users/sakishum/data/work/aarch64/.build’ is not case-sensitive!

问题原因

By default, regardless if your Mac’s system drive is formatted as Mac OS Extended (HFS+) or APFS, it is formatted as Case-insensitive.

解决办法

比较简单的解决方法就是创建一个支持大小写区分的文件,作为一个分区挂载,然后把代码拷贝到这个分区中执行编译。

创建分区文件

1
hdiutil create -volname "Aarch64" -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 20g aarch64.dmg

挂载分区

早期版本的Mac OS X

1
2
3
diutil attach raspberry.dmg -mountpoint /Volumes/aarch64
# 切换到挂载目录
cd /Volumes/aarch64/

对于OS X EI Capitan(10.11.5)版本而言,生成的文件名变成了raspberry.dmg.sparseimage因此需要使用这个文件来挂载

1
2
3
hdiutil attach raspberry.dmg.sparseimage -mountpoint /Volumes/aarch64
# 切换到挂载目录
cd /Volumes/aarch64/

挂载后会在桌面生成一个名为Aarch64的磁盘文件夹生成,直接操作这个目录即可。

修改crosstool-ng的编译工具下载目录

1
ct-ng menuconfig

如下图的方式进行操作:

1.选择”Paths and misc options“,并选中”Select“之后点击回车按键

2.点击向下的方向按键,,找到”(${Home}/src) Local tarballs directory“,这个项,并选中”Select“之后点击回车按键,修改为”/Volumes/raspberry/src“,然后继续向下,找到”(${Home}/x-tools/${CT_TARGET}) Prefix directory“,这个项,并选中”Select“之后点击回车按键,修改为”/Volumes/raspberry/x-tools/${CT_TARGET}

修改后的结果如下图:

完成操作后,不断快速按下Esc按键,在最后弹出的确认保存窗口中选择保存即可,如下图:

卸载分区

1
hdiutil detach /Volumes/raspberry

重启机器后分区也会被卸载。

引用

以上。

CATALOG
  1. 1. 环境
  2. 2. 前言
  3. 3. 遇到的问题
    1. 3.1. Number of open files 256 may not be sufficient to build the toolchain; increasing to 2048
      1. 3.1.1. 问题原因
      2. 3.1.2. 解决办法
    2. 3.2. Your file system in ‘/Users/sakishum/data/work/aarch64/.build’ is not case-sensitive!
      1. 3.2.1. 问题原因
      2. 3.2.2. 解决办法
      3. 3.2.3. 创建分区文件
      4. 3.2.4. 挂载分区
      5. 3.2.5. 修改crosstool-ng的编译工具下载目录
      6. 3.2.6. 卸载分区
  4. 4. 引用