LicheeRV 86能够使用c和c++进行编程,有些代码感觉写起来比较麻烦,因此就想到了将python移植到板子上。经过了多天的努力,成功将python3.8移植到了开发板上。现将移植过程分享一下。
python的主要代码也是用c/c++编写的,因此可以通过交叉编译将python编译成开发板可以使用的版本。编译完成将生成可执行文件和对应的lib。
通过将可执行文件加入到PATH变量,将库的路径加入了LD_LIBRARY_PATH变量,就可以实现python的功能了。
所以重点是如何生成可执行文件和库。
1. 下载python的源码
python的官网上提供源码的下载方式,下载之后解压即可得到所需的源代码。我选择的是python3.8.13 。
2. 配置python的编译方式
2.1 设置编译工具对应的变量
在编译python的时候需要指定编译所需的编译工具,其通过变量CC, CXX, AR
等引入所需的编译工具。
这些工具已经在配置开发板交叉编译环境的时候配置好了,因此配置好环境之后就可以直接使用了。
注意在使用之前要通过source命令,使能开发板编译工具的变量。
2.2 建立文件夹
在源代码的根目录下建立一个文件夹存放一些编译生成的中间文件。
mkdir riscv.build
2.3 配置编译参数
通过一下指令配置编译的参数:
../configure --prefix=/Python3.8.13 --build=riscv64-linux-gnu --host=riscv64-linux --target=riscv64-linux-gnu --enable-shared --enable-ipv6 --with-system-ffi ac_cv_file__dev_ptmx=0 ac_cv_file__dev_ptc=0 --enable-optimizations
上面的参数我也不是很懂,有兴趣的可以参考这个网址: https://docs.python.org/zh-cn/3.10/using/configure.html
注意在要想配置python3.8.13版本,需要首先在电脑上按照python3.8才可以配置成功,否则会报错。当时报的错误没有记录下来,这里就不贴图了。
3. 生成相关文件并导入开发板
然后调用指令
make
sudo make install
编译的时间会比较久,当编译完成后会在根目录下生产一个Python3.8.13的文件夹,这个文件夹包括所有要用到的东西。将这个文件夹内的东西复制到开发板上,然后在PATH和LD_LIBRARY_PATH两个变量里加入python执行文件的路径和lib的路径就可以使用了。
添加方式是修改 /etc/profile文件,在文件的最后加上
export PATH=$PATH:/usr/python3.8/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/python3.8/lib
然后通过source命令生效。
source /etc/profile
现在就可以使用python3指令了。
4. 效果
使用python3,即可在终端打开python的命令行。
编译后的文件夹将近300M,还没有权限上传,各位可以自行编译试试。