码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux笔记(2):vscode插件remote WSL远程使用交叉编译工具链(全志D1-H)


    文章目录

    • 1.前期准备
      • 1.1 Windows有对WSL文件读写的权限
      • 1.2 WSL的C语言编译环境已经搭建完毕
    • 2.在windows的vscode安装remoteWSL插件
    • 3.从ubuntu启动windows端的vscode
    • 4.使用vscode编译ubuntu端的c文件
      • 4.1 在《tasks.json》指定可视化make命令
      • 4.2编写Makefile文件
      • 4.3 开始编译
        • 4.3.1 打开《终端->运行任务》
        • 4.3.2 点击 make
        • 4.3.3 在ubuntu测试刚才编译后的文件
        • 4.3.4 修改一下源码,重复上面的流程,确认编译有效
    • 5. 使用D1-H的交叉编译工具链测试
    • 6.设置快捷键启动运行任务
    • 7.测试源码链接

    本人linux还没入门,这个只是学习笔记,方便自己查阅。有不对的地方,请大家不吝赐教。
    这里使用linux自带的gcc编译器做练习,演示,学习,当然我们的最终目标是编译东山哪吒开发板(D1-H)app应用程序。

    1.前期准备

    1.1 Windows有对WSL文件读写的权限

    从windows的资源浏览器进入ubuntu-18.04的虚拟硬盘:地址栏输入 \\wsl$
    然后新建一个文件夹:
    在这里插入图片描述
    在文件夹里面新建一个txt文件。如果成功,说明具备读写权限。这样我们可以非常方便的操作linux的文件。
    我的记性差,老忘记linux命令,加上懒,键盘输入不够快,在linux操作非常痛苦。

    1.2 WSL的C语言编译环境已经搭建完毕

    这里需要的是gcc编译器,make。

    2.在windows的vscode安装remoteWSL插件

    在vscode的插件管理中心搜索wsl(我这里已经安装好,所以没有安装的按键):
    在这里插入图片描述
    安装完毕后,在第一步的刚刚新建的文件夹 test 里面再新建一个文件夹,把我的测试代码(见文章底部)放进去。
    在这里插入图片描述

    3.从ubuntu启动windows端的vscode

    在ubuntu进入 /home/hwd/test/hello2,并输入命令(code 和小数点中间有空格):

    code .
    
    • 1

    在这里插入图片描述
    此时,windows端会自动开启一个vscode应用:
    在这里插入图片描述

    4.使用vscode编译ubuntu端的c文件

    我们看看《hello2》文件夹里面的文件:
    在这里插入图片描述

    4.1 在《tasks.json》指定可视化make命令

    我还没有习惯使用命令行编译程序,非常渴望有可视化的编译工具,比较依赖鼠标。
    vscode会根据工程目录下的文件夹 .vscode 里面的 文件 tasks.json 生成可视化命令。这里的 tasks.json 非常简单:

    {
        "tasks": [
            {
                "type": "shell",//任务类型
                "label": "make",//任务名称(在vscode看到的名称)
                "command": "make",//命令行:编译器(可执行文件)的路径
            }
        ],
        "version": "2.0.0"
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    功能等同于下面的命令make:
    在这里插入图片描述

    4.2编写Makefile文件

    这里用一个最简单的Makefile文件:

    CROSS_COMPILE = /usr/bin/
    AS		= $(CROSS_COMPILE)as
    LD		= $(CROSS_COMPILE)ld
    CC		= $(CROSS_COMPILE)gcc
    CPP		= $(CC) -E
    AR		= $(CROSS_COMPILE)ar
    NM		= $(CROSS_COMPILE)nm
    test : main.c 
    	$(CC) -o test main.c 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    4.3 开始编译

    测试helloword(应该是helloworld),反正韦东山老师的例程是这样的:

    #include 
    
    int main(int argc, char* argv[])
    {
        printf("hello2word!\n");
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.3.1 打开《终端->运行任务》

    在这里插入图片描述

    4.3.2 点击 make

    在这里插入图片描述
    第一次会弹出一个窗口,选择“从不扫描此任务的任务输出”,下次就不会弹出这个窗口:
    在这里插入图片描述

    此时,如果c代码没有错误,就会正常输出:
    在这里插入图片描述
    根据提示,按任意键关闭终端。

    4.3.3 在ubuntu测试刚才编译后的文件

    在这里插入图片描述

    4.3.4 修改一下源码,重复上面的流程,确认编译有效

    改动一下打印输出:

    printf("hello2word!123\n");
    
    • 1

    再次编译,运行:
    在这里插入图片描述

    5. 使用D1-H的交叉编译工具链测试

    把Makefile的CROSS_COMPILE改成交叉编译工具链的路径:

    CROSS_COMPILE = /home/hwd/eLinuxCore_dongshannezhastu/toolchain/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-
    
    • 1

    保存,点击 终端->运行任务->make ,编译后,这个文件应该是无法在pc上面运行的,我们使用file命令查看一下信息:

    root@SK-JNTINRTMRDZW:/home/hwd/test/hello# file test
    test: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64xthead-lp64d.so.1, for GNU/Linux 4.15.0, with debug_info, not stripped
    root@SK-JNTINRTMRDZW:/home/hwd/test/hello# 
    
    • 1
    • 2
    • 3

    编译完成后,vscode界面的终端就是ubuntu的终端:
    在这里插入图片描述
    这个程序要做开发板上面运行,具体运行过程参考下篇文章《linux笔记(3):东山哪吒STU开发板(全志D-1H)开箱初体验helloworld》。

    6.设置快捷键启动运行任务

    在这里插入图片描述
    现在我们测试一下,按下 Ctrl+ F8:
    在这里插入图片描述

    7.测试源码链接

    链接:https://pan.baidu.com/s/1A0L9msimWU8x58HRwbQ_8Q?pwd=f0ho
    提取码:f0ho

  • 相关阅读:
    Python基础教程:行与缩进正确用法教程
    如何使用layui将数据库中的数据以表格的形式展现出来
    Flutter 调用百度地图APP实现位置搜索、路线规划
    开发工程师必备————【Day14】数据库查询表关键字及多表查询思路
    Rust——包管理
    永远无法实现的“诚实“
    【力扣-二叉树-01】在二叉树中分配硬币-力扣 979 题
    网页图片提取-免费在线任意网页图片提取软件
    java 企业工程管理系统软件源码 自主研发 工程行业适用
    时间空间复杂度分析--冒泡排序算法
  • 原文地址:https://blog.csdn.net/hwd00001/article/details/127859362
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号