解决“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’))。

图(1) MAC M1芯片,报软件兼容错误

    问题原因: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

    效果如下:

图(2) 测试成功

以上是关于解决“MAC M1 incompatible architecture“问题的主要内容,如果未能解决你的问题,请参考以下文章

vs2008解决方案资源管理器不显示解决方案

什么是 沙盒解决方案

解决PowerShell乱码问题

如何解决解决方案中现有项目的c#CS0006错误

关于问题解决与事件解决的思考

「解决方案架构」解决方案架构概述