将vim神器移植到IOS12.4的无聊记录

最近业余时间不知道折腾点啥,于是,决定把旧的iPhone 5s越狱一下玩。

当用ssh登录后发现居然没有任何文本编辑器,于是决定将vim神器移植到上面。

首先去github下载源码,地址就不列出来了。

然后使用我的破mac air 来进行交叉编译。

做交叉编译,第一步是整出交叉编译环境。网上查了一下资料,大多数是说安装xcode。欢天喜地的去App store下载,一看居然要2G多。可怜我只有128的硬盘,还装了双系统。想了想,还是不安装了。

再查资料,发现有xcode命令行版,试了一下,我电脑居然装了,想了想应该是以前编译php的时候安装的。

先尝试下交叉编译一个程序看看。写了个hellword 的c程序。按照网上的介绍进行了一下编译。

提示头文件异常,查资料才知道,还需要下载交叉编译所需要的环境包。于是在苹果官网下载了 iPhoneOS.sdk包,解压缩好,使用命令再次尝试 编译通过,

./configure -arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk -o helloworld helloworld.c 

赶紧推送到手机试试,结果提示有错误

zsh: killed     ./helloworld

百度资料,说是没有签名,然后就是一堆app签名的广告。最后找到一条博客讲了如何自签名。

于是生成本地证书,用命令行签名(“xxxxx”是生成证书时证书的hash值,一定要保存好,以后签名就用它来指定证书),推进去果然成功。

codesign -s "xxxxx" -f helloworld

进入vim解压后的目录 开始configure

./configure  CC=clang  --with-mac-arch=arm64 CFLAGS="-arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk"  --host=arm64

还是报错,继续折腾吧,百度了一下,根据资料调整了一下

./configure  CC=clang  --with-mac-arch=arm64 CFLAGS="-arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk"  --host=arm64 vim_cv_toupper_broken=no  vim_cv_terminfo=no   --with-tlib=ncurses vim_cv_terminfo=yes   vim_cv_tgetent=no vim_cv_getcwd_broken=yes vim_cv_stat_ignores_slash=yes vim_cv_memmove_handles_overlap=yes  --with-features=normal 

居然通过了,好开心,执行make试试,结果提示一堆头文件找不到。还是找资料,原来是tlib没有配置,重新配置,然后make,还是错,提示curses.h头文件找不到,用命令去iPhoneOS12.4.sdk目录下看看文件存不存在 ,果然是没有这个头文件,也就是说,缺少了对应的lib库。想了想,只能源码编译curses对应的开源库,也就是ncurses。

下载源码,解压,配置。

./configure CFLAGS="-arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk"  --target=arm64 --host=arm64 --prefix="/iPhoneOS.sdk/iPhoneOS12.4.sdk"

有错,经过仔细查看日志,查看configure的帮助文档,发现是缺少了--with-build-cc=clang 参数,补上继续尝试。然后提示我找不到stdc++,只能求助百度了,原来是ios系统从12开始,不在使用stdc++ 二是改成libc++,于是重新配置

./configure CFLAGS="-arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk"  --target=arm64 --host=arm64   --with-build-cc=clang   --prefix="/iPhoneOS.sdk/iPhoneOS12.4.sdk" CPPFLAGS=" -stdlib=libc++"

配置通过,然后执行make.有错误,再改配置

./configure CFLAGS="-arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk"  --target=arm64 --host=arm64   --with-build-cc=clang   CPPFLAGS=" -stdlib=libc++ -arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk" --prefix="/iPhoneOS.sdk/iPhoneOS12.4.sdk"

make 成功,然后make install 成功的在iPhoneOS12.4.sdk目录下看到了头文件。

返回vim,重新配置 make 成功。

./configure  CC=clang  --with-mac-arch=arm64 CFLAGS="-arch arm64 -isysroot /iPhoneOS.sdk/iPhoneOS12.4.sdk"  --host=arm64 vim_cv_toupper_broken=no  vim_cv_terminfo=no   --with-tlib=ncurses vim_cv_terminfo=yes    vim_cv_tgetent=no vim_cv_getcwd_broken=yes vim_cv_stat_ignores_slash=yes vim_cv_memmove_handles_overlap=yes  --with-features=normal --with-tlib=/ncurses-6.3/lib/libncurses.dylib

签名,拷贝到手机,执行,成功出现画面。将vim神器移植到IOS12.4的无聊记录_第1张图片

第一次执行 有出现提示

E1187: Failed to source defaults.vim
Press ENTER or type command to continue

使用touch .vimrc 在当前登录用户的home 目录创建文件就好了。

你可能感兴趣的:(技術,xcode,macos,ios,vim)