@TOC
说明
现在win10系统内嵌了一个linux子系统,就想试试是否可以配置成自己平常用的开发环境,之前也试过,但失败了,这一次配置成功了,便记录一下配置过程。
使用的系统是ubuntu18.04LTS,要配置的编译器是arm-linux-gcc。
启用WSL
关于如何启用win10自带的子系统就不多说了,这个问一下度娘很容易就能知道,只要在“启用或关闭windows功能”中选中wsl,重启电脑后便可支持子系统。
启用之后我们可以在windows商店中选择自己喜欢的linux系统,我平时用的是ubuntu,所以选择了ubuntu18.04LTS,下载安装后,在win10左下角的搜索框输入ubuntu就会出现选项,确定后便可以进入ubutu系统了。
配置过程
我的目的是配置自己的工作环境,所以程序代码都是平时用的,这个就不分享了,大家可以自己找或者写个helloc world测试用。我只要能够成功编译自己的代码就算成功了。
进入系统后,先编译一下代码,看看缺少哪些支持。首先自然是make命令,这个好解决,直接
sudo apt install make
另外我还需要dos2unix,同样的方法也能解决。
最重要的就是编译器了,其实编译器的配置说起来是很简单的,无非就是把编译器拷贝过来,然后配置一下PATH路径,但对于我这种没那么熟练的菜鸟来说还是费了很多功夫的。
交叉编译器
我之前的编译器是arm-linux-gcc4.8.4,是新唐NUC9700芯片配的编译环境,但是我电脑上没有,所以在网上找这个版本找了好久都没找到,后来才找到新唐的资源,直接运行安装脚本然后等待安装完成就可以了。
以上这些虽然很费时间,但其实都还好解决,最蛋疼的是配置后之后还是不能用,编译的时候会报错:arm-linux-gcc: Syntax error: "(" unexpected。之前配置的时候就是卡在这里,一直没能解决,所以弃用了,这次依然遇到了这个问题。抱着试一试的态度又开始了网上查找解决方案的漫漫长路。
此处略去诸多心酸历程。
最后的解决办法:原因是wsl是64位系统,而编译器是32位的,这种情况下需要安装32位的运行库。
其实之前就意识到这个问题了,但根据网上所有的解决办法,安装了好多库,始终没有解决,没想到这次竟然解决了,方法是博文。
sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
启用和禁用的命令是:
sudo service binfmt-support start
sudo service binfmt-support stop
操作之后可以验证一下,arm-linux-gcc -v查看一下版本,如果可以说明正常了。
结语
期间其实还有很多问题,比如安装sqlite3之后提示找不到库,是因为还要安装sqlite3-dev,等等,但其实这些安装软件的还好,网上有很多解决办法可以查到,关键的就是32位和64位这个问题,折腾了好久。
声明:如果让我再配一遍说不定还是要折腾很久,因为我不确定我这出的这几个点是否就是这样解决的,因为中间还安装过许多其他乱七八糟的东西,说不定是某一个生效了呢,所以以上仅供参考,无法解决您的问题也希望轻喷。
网友评论