【嵌入式——C语言】VScode编写C程序、交叉编译

【嵌入式------C语言】VScode编写C程序、交叉编译

第一步

下载Visual Studio Code下载地址

然后直接安装就可以了。

第二步

前提是你的电脑上安装了WSL。。。

打开vscode的扩展,输入WSL进行安装

安装完之后在窗口左下角点击蓝色的框框,然后选择连接到WSL

这个时候就可以直接打开Ubuntu中的目录或者文件从而进行编译了。

第三步

要想编辑C/C++程序,还需要在扩展中添加以下工具。

安装CMake

第四步

我们首先创建一个目录用作我们编写C程序的目录,我这里的目录名称是my_code。

打开这个目录之后,我们首先需要创建CMakeLists.txt文件。点击按按钮进行文件的创建

文件内容

c 复制代码
# cmake不能低于该版本
cmake_minimum_required(VERSION 3.0.0)
project(main VERSION 0.1.0 LANGUAGES C)
# 生成可执行文件main,后面的为所依赖的文件
add_executable(main list/main.c list/demo.c)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
# 设置编译器 我这里用到的是交叉编译
set(CMAKE_C_COMPILER "/opt/riscv64-linux-x86_64-20210512/bin/riscv64-unknown-linux-gnu-gcc") 

ctrl+shift+p打开配置 搜索 cmake: 快速入门

会让你选择编译器,根据自己的需求进行选择我这里选择的是riscv-unknown-linux-gnu

然后会生成build目录

第五步

编写C程序代码。
main.c

c 复制代码
#include <stdio.h>
#include "demo.h"
int main(int argc, char **argv)
{
    printf("Hello, main!\n");
    demoPrint();
    return 1;
}

demo.c

c 复制代码
#include "demo.h"
#include <stdio.h>
void demoPrint()
{
    printf("Hello demoPrint\n");
}

demo.h

c 复制代码
void demoPrint();

第六步

点击终端->配置默认生成任务

根据需求进行选择,我这里选择的是第一个。默认生成一个tasks.json文件。

修改tasks.json文件。
文件内容

c 复制代码
{
	"version": "2.0.0",
	"options": {
		"cwd": "${workspaceRoot}/build" //指定命令执行所在路径
	},
	"tasks": [
		{
			"label": "cmake",
			"type": "shell",
			"command": "cmake",
			"args": [
				".."
			]
		},
		{
			"label": "make",
			"command": "make",
			"args": [],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"dependsOn": [
				"cmake"
			] //指定,在执行make之前,需先执行cmake
		}
	]
}

第七步

终端->运行生成任务

执行成功。

build目录下会生成一些文件,自动生成了makefile文件,执行文件也在这个目录中。

第八步

使用工具将main执行文件传到单片机上并执行。

相关推荐
努力努力再努力wz14 分钟前
【Linux网络系列】深入理解 I/O 多路复用:从 select 痛点到 poll 高并发服务器落地,基于 Poll、智能指针与非阻塞 I/O与线程池手写一个高性能 HTTP 服务器!(附源码)
java·linux·运维·服务器·c语言·c++·python
Han_han91925 分钟前
常用API:
java·开发语言
minji...29 分钟前
Linux 线程同步与互斥(四) POSIX信号量,基于环形队列的生产者消费者模型
linux·运维·服务器·c语言·开发语言·c++
uElY ITER37 分钟前
VS与SQL Sever(C语言操作数据库)
c语言·数据库·sql
Highcharts.js39 分钟前
在 React 中使用 useState 和 @highcharts/react 构建动态图表
开发语言·前端·javascript·react.js·信息可视化·前端框架·highcharts
likerhood1 小时前
java中的return this、链式编程和Builder模式
java·开发语言
程序猿编码1 小时前
给Linux程序穿“隐身衣”——ELF运行时加密器全解析(C/C++代码实现)
linux·c语言·c++·网络安全·elf·内存安全
Goway_Hui1 小时前
【ReactNative鸿蒙化-三方库使用与C-API集成】
c语言·react native·harmonyos
原来是猿1 小时前
Linux线程同步与互斥(三):POSIX信号量与环形队列生产者消费者模型
linux·运维·服务器·开发语言
未来转换1 小时前
基于A2A协议的生产应用实践指南(Java)
java·开发语言·算法·agent