环境
系统: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 | ct-ng source |
遇到的问题
Number of open files 256 may not be sufficient to build the toolchain; increasing to 2048
问题原因
问题提示的字面意思
解决办法
编译目录下执行命令:
1 | # That should increase your soft limit for open files (-n) to 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 | diutil attach raspberry.dmg -mountpoint /Volumes/aarch64 |
对于OS X EI Capitan(10.11.5)
版本而言,生成的文件名变成了raspberry.dmg.sparseimage
因此需要使用这个文件来挂载
1 | hdiutil attach raspberry.dmg.sparseimage -mountpoint /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 |
重启机器后分区也会被卸载。
引用
- Case Sensitive file system
- Mac OSX下执行crosstool-ng提示错误
- How do I increase the open files limit for a non-root user?
以上。