查看: 1718|回复: 0
收起左侧

RISC-V交叉编译环境搭建

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-8-23 12:10:20 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-8-26 12:31 编辑

    目标

    在 Windows10 环境下,使用Docker构建centos7容器,在容器中搭建RISC-V的交叉编译环境。


    主要内容包括:


    • Centos7容器的制作;
    • 在容器中安装交叉编译器;



    Centos7容器的制作
    • Docker的简单介绍
      以往我们制作一个虚拟机,往往在VMware或VirtualBox等软件中,使用 .iso镜像文件构建具有完整操作系统的虚拟机。这种方式制作的虚拟机在运行时资源占用多、冗余步骤多、启动慢。针对以上这些缺点,Linux发展出另外一种虚拟化技术——Linux 容器(Linux Containers,缩写为 LXC)。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
      由于容器是进程级别的,相比虚拟机有很多优势——启动快、资源占用少、体积小。1
      总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。
      再说到Docker,Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
      Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
      总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。


    • 使用Docker创建容器的步骤

    • 新建一个目录mydocer,新建一个dockerfile文件。Docker使用这个dockerfile制作出镜像,之后再使用镜像制作出容器。dockerfile可以将一些容器需要的设置(如用户名和密码等)和软件(如wget)部署到镜像中,这样在容器生成后,就不必再手动安装一些常用的软件和配置系统环境了。

    1. FROM centos
    2. RUN yum install kde-l10n-Chinese -y
    3. RUN yum install glibc-common -y
    4. RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
    5. RUN export LANG=zh_CN.UTF-8
    6. RUN echo "export LANG=zh_CN.UTF-8" >> /etc/locale.conf
    7. ENV LANG zh_CN.UTF-8
    8. ENV LC_ALL zh_CN.UTF-8

    9. RUN yum -y install wget
    10. RUN rm -rf /etc/yum.repos.d
    11. RUN wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    12. RUN yum clean all

    13. RUN yum install -y openssh-server sudo
    14. RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

    15. RUN useradd username
    16. RUN echo "username:userpasswd" | chpasswd
    17. RUN echo "username ALL=(ALL) ALL" >> /etc/sudoers

    18. RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
    19. RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    20. RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
    21. RUN echo AddressFamily inet >> /etc/ssh/sshd_config

    22. RUN mkdir /var/run/sshd
    23. EXPOSE 22

    24. CMD ["/usr/sbin/sshd", "-D"]
    复制代码

    生成镜像。在mydocker目录下打开命令行窗口,输入命令:


    1. ......................
    2. .....................
    3. +--[ED25519 256]--+
    4. |           .Bo. o|
    5. |         o . *.oo|
    6. |      . . = . o +|
    7. |     . o + o o.+o|
    8. |    o . S    .+* |
    9. |  Eo ..=...   o o|
    10. |   ..o..ooo..   .|
    11. |    o .  .+= o o |
    12. |     .  .ooo+ . .|
    13. +----[SHA256]-----+
    14. Removing intermediate container ce77a2e2770f
    15. ---> 1f97d912fb81
    16. Step 21/24 : RUN echo AddressFamily inet >> /etc/ssh/sshd_config
    17. ---> Running in 45e29f163d79
    18. Removing intermediate container 45e29f163d79
    19. ---> 297221d56ae8
    20. Step 22/24 : RUN mkdir /var/run/sshd
    21. ---> Running in c6a6023ad8c9
    22. Removing intermediate container c6a6023ad8c9
    23. ---> 65d1a5968e75
    24. Step 23/24 : EXPOSE 22
    25. ---> Running in 46b4de1a81ce
    26. Removing intermediate container 46b4de1a81ce
    27. ---> 6a53621785b1
    28. Step 24/24 : CMD ["/usr/sbin/sshd", "-D"]
    29. ---> Running in 1feddc96c13a
    30. Removing intermediate container 1feddc96c13a
    31. ---> ce883199515c
    32. Successfully built ce883199515c
    33. Successfully tagged course_image:latest
    34. SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
    复制代码

    使用如下命令查看生成好的镜像信息:


    1. docker images
    复制代码

    使用镜像生成容器。使用如下命令生成一个容器:


    1. docker run -d --name container_name -v D:/Windows_share_file:/Linux_share_file -p 10022:22 image_name
    复制代码

    上面的命令分别中,-d 指定容器运行于前台还是后台,默认为false; --name 指定容器的名字 -v 指定windows和容器之间的共享文件夹,Windows_share_file是windows下的文件夹,Linux_share_file是映射到容器中的文件夹,容器创建成功后,会创建一个/Linux_share_file文件夹;-p 指定了windows和容器之间的端口映射关系。


    容器生成后,使用下面的命令查看容器信息:


    1. docker ps -a
    复制代码

    输出信息如下:


    1. CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                   NAMES
    2. 899f1314a212        image_name        "/usr/sbin/sshd -D"      7 seconds ago       Up 4 seconds                0.0.0.0:10022->22/tcp   container_name
    复制代码

    顺便提一下几个常用命令:


    1. 停止容器:docker stop     container_name
    2. 启动容器:docker start    container_name
    3. 删除容器:docker rm       container_name
    4. 重启容器:docker restart  container_name
    5. 删除镜像:docker image rm container_name
    复制代码

    • 使用putty登陆容器。分别填入Host name 127.0.0.1和port 10022,点击open,出现容器的ssh登陆界面,登陆成功后,可以去找你的共享目录,查看是否存在,例如,我的共享目录设为/home/xxx/Winshare,显示如下。

    国内芯片技术交流-RISC-V交叉编译环境搭建risc-v单片机中文社区(1)


    国内芯片技术交流-RISC-V交叉编译环境搭建risc-v单片机中文社区(2)


    到这里,Centos7容器制作完毕。

    在容器中安装RISC-V交叉编译器

    在Centos7容器中可以安装事先编译编译好的RISC-V交叉编译器,从https://github.com/SI-RISCV/hbird-e-sdk/tree/master/prebuilt_tools下载。也可以从https://github.com/riscv/riscv-gnu-toolchain下载源码自已编译安装(编译方法和交叉编译器介绍参考这里)。一般国内从github上下载网速比较慢,编译时间也比较长,推荐使用第一种方法,本文也使用第一种方法。


    • 下载gnu-mcu-eclipse-riscv-none-gcc-7.2.0-4-20180606-1631-centos64.tgz,放到windows下共享目录。
    • 将gnu-mcu-eclipse-riscv-none-gcc-7.2.0-4-20180606-1631-centos64.tgz解压到家目录下,得到gnu-mcu-eclipse目录。

    1. cd ~
    2. tar -xzvf gnu-mcu-eclipse-riscv-none-gcc-7.2.0-4-20180606-1631-centos64.tgz
    复制代码

    将RISC-V编译器添加到环境变量中


    1. cd ~
    2. vi .bashrc
    3. 在.bashrc文件最后一行添加:export PATH=$PATH:/home/course_wdz/gnu-mcu-eclipse/riscv-none-gcc/7.2.0-4-20180606-1631/bin
    4. 保存并退出vi后,执行
    5. source .bashrc
    复制代码

    执行下面的命令查看是否安装成功:


    1. riscv-none-embed-gcc --version
    2. 如果成功,终端显示:
    3. riscv-none-embed-gcc (GNU MCU Eclipse RISC-V Embedded GCC, 64-bits) 7.2.0
    4. Copyright (C) 2017 Free Software Foundation, Inc.
    5. This is free software; see the source for copying conditions.  There is NO
    6. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    复制代码


    至此,RISC-V交叉编译器在Centos7容器中安装成功了。


    http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

    本篇完,感谢关注:RISC-V单片机中文网




    上一篇:The GNU MCU Eclipse RISC-V Embedded GCC build
    下一篇:国产MCU,Cortex-M和RISC-V核心
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-11-6 08:00 , Processed in 0.312484 second(s), 48 queries .

    快速回复 返回顶部 返回列表