解决“MAC M1 incompatible architecture“问题
Posted sanqima
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决“MAC M1 incompatible architecture“问题相关的知识,希望对你有一定的参考价值。
今天,在proxychains-ng时,弹出如下错误:libproxychains4.dylib’ (mach-o file, but is an incompatible architecture (have ‘arm64’, need ‘arm64e’))。
问题原因:Mac M1芯片采用Arm架构与Intel芯片的X86、X64架构,是不相同的;如果Mac主机使用的M1芯片,则需要安装M1芯片对应的软件版本,否则软件无法运行。
这里以proxychains-ng在Mac mini(使用M1芯片)的安装为例,进行说明。
1、禁用SIP功能
一般的iMac是长按Ctrl+R(或Win+R)进入恢复模式,才能设置SIP。
而苹果mini,是要长按开机键,直到弹出黑屏选项,点击[选项] --> 继续 --> 点击[实用工具] --> 终端,依次输入如下命令:
## 1) 禁用SIP
csrutil disable
y
## 2) 等约1分钟,若打印“System Integrity Protection is off” 说明SIP功能已经关闭。
## 3) 重启电脑
reboot
2、下载proxychains-ng并编译
2.1 下载proxychains-ng
wget http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.16.tar.xz
2.2 解压proxychains-ng
tar -xvf proxychains-ng-4.16.tar.xz
2.3 进行3次编译
2.3.1 第1次编译
a)首先,使用arm64e指令编译,得到config.mak文件和libproxychains4.dylib。
cd proxychains-ng-4.16
make clean
CFLAGS="-arch arm64e" LDFLAGS="-arch arm64e" ./configure
make
b)修改config.mak里的第7~8行的bindir、libdir路径:
// 修改前
bindir=/usr/bin
libdir=/usr/lib
//修改后:
bindir=/usr/local/bin
libdir=/usr/local/lib
创建/usr/local/bin、/usr/lcoal/lib目录,并设置读、写、可执行权限:
## 2.1)创建bindir、libdir对应的文件夹
sudo mkdir -p /usr/local/bin
sudo mkdir -p /usr/local/lib
## 2.2)添加读、写、可执行权限
sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib
c) 将libproxychains4.dylib保存到./bak目录下
mkdir bak
cp libproxychains4.dylib ./bak
2.3.2 第2次编译
a)第2次编译,也使用arm64e指令
## 再次编译
make clean
CFLAGS="-arch arm64e" LDFLAGS="-arch arm64e" ./configure
make
## 拷贝libproxychains4.dylib到./bak目录
cp libproxychains4.dylib ./bak
2.3.3 第3次编译
a)第3次编译,也使用arm64指令
make clean
CFLAGS="-arch arm64" LDFLAGS="-arch arm64" ./configure
sudo make install
b)使用install.sh拷贝./bak/libproxychains4.dylib 到/usr/local/lib/目录
sudo ./tools/install.sh -D -m 644 bak/libproxychains4.dylib /usr/local/lib/libproxychains4.dylib
3、设置IP和端口
在/etc/proxychains.conf的添加IP和端口
sudo vi /etc/proxychains.conf
在proxychains.conf文件的[ProxyList]字段,禁用socks4,启用socks5,如下所示:
// proxychains.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
#socks4 127.0.0.1 9050 ##注释掉sock4
socks5 127.0.0.1 XXXX ## 填写此项
4、测试proxychains-ng
proxychains4 curl cip.cc
效果如下:
以上是关于解决“MAC M1 incompatible architecture“问题的主要内容,如果未能解决你的问题,请参考以下文章