c编译器学习03:chibicc的win10 vs 编译、调试环境设置

虚拟机

用VMware Workstation 17 Player,安装centos7,安装gcc等开发工具
设置虚拟机的共享文件夹,将win10下下载的chibicc拷贝到/home/a下
直接make编译
在这里插入图片描述
用ip addr查询得到虚拟机的ip地址,后面vs远程开放时使用。

vs设置

vs毕竟是号称宇宙第一ide,虽然目前支持linux远程开发还有些bug,但多趟几个坑,基本都能用了。个人习惯了vs,也比较推荐。
在这里插入图片描述
在本地工程目录加一个CMakeLists.txt文件,内容如下:

cmake_minimum_required(VERSION 3.10)
project(chibicc)# Set C standard and compilation flags
set(CMAKE_C_STANDARD 11)
add_compile_options(-g -fno-common -Wall -Wno-switch)# Define source files
set(SOURCE_FILEStokenize.cunicode.chashmap.ctype.cmain.cparse.ccodegen.cpreprocess.cstrings.c
)# Create executable
add_executable(chibicc ${SOURCE_FILES})

以上设置完,就可以在win10 vs下进行本地虚拟机的linux c编译器代码的单步debug了。

vs编译输出路径在~/.vs/chibicc …/out/… 目录下。

测试使用chibicc

./chibicc --help 这个输出指示没问题,编译错误是test下的.c测试代码不全导致的。

以alignof.c为例,添加assert函数,修正如下:

#include "test.h"//add start
//#include "common"
void assert(int expected, int actual, char* code) {if (expected == actual) {printf("%s => %d\n", code, actual);}else {printf("%s => %d expected but got %d\n", code, expected, actual);exit(1);}
}
//add endint _Alignas(512) g1;
......

./chibicc -S …/…/…/src/test/alignof.c 可以输出asm文件。
./chibicc -c …/…/…/src/test/alignof.c 可以输出.o文件
./chibicc …/…/…/src/test/alignof.c 可以输出a.out文件

./a.out文件执行正常,chibicc编译运行测试通过。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.20号qt

1.Qt中的信息调试类 &#xff08;输出类&#xff09; QDebug //1.类似与printf qDebug("%s","hello kittiy"); //2. 类似与cout 默认有换行 比较常用的方式 qDebug() << "你好" ; //1.类似与printf qDebug("%s",&q…

JS基础之函数

js基础之函数 目录 js基础之函数什么是函数&#xff1f;函数的语法无参函数有参函数&#xff1a;函数表达式函数的返回值returnarguments 什么是函数&#xff1f; 函数的作用就是将一段代码块封装打包到一起&#xff0c;方便后期重复使用 函数的语法 function 函数名(参数1,…

使用elasticsearch 8.4.3 的管道解析日志(kibana操作)

使用elasticsearch的管道解析日志&#xff08;kibana操作&#xff09; 一. 什么是 pipeline二. 案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 以下是一个简单的文档解析案例…

Project_Euler-15 题解

Project_Euler-15 题解 题目 思路 一眼背包问题&#xff0c;再看一眼广度优先搜索&#xff0c;再看一眼排列组合&#xff0c;这里讲一讲排列组合的解法吧&#xff1a; 以 2 ∗ 2 2*2 2∗2的组合为例可以发现&#xff1a; 无论哪一种方法&#xff0c;从左上角到右下角总共需要…

【LeetCode】递归精选8题——基础递归、链表递归

目录 基础递归问题&#xff1a; 1. 斐波那契数&#xff08;简单&#xff09; 1.1 递归求解 1.2 迭代求解 2. 爬楼梯&#xff08;简单&#xff09; 2.1 递归求解 2.2 迭代求解 3. 汉诺塔问题&#xff08;简单&#xff09; 3.1 递归求解 4. Pow(x, n)&#xff08;中等&…

论文精读--Noisy Student

一个 EfficientNet 模型首先作为教师模型在标记图像上进行训练&#xff0c;为 300M 未标记图像生成伪标签。然后将相同或更大的 EfficientNet 作为学生模型并结合标记图像和伪标签图像进行训练。学生网络训练完成后变为教师再次训练下一个学生网络&#xff0c;并迭代重复此过程…

强化学习入门(Matlab2021b)-定义奖励和观察【1】

目录 1 前言2 Continuous Rewards 连续奖励3 Discrete Rewards 离散奖励4 Mixed Rewards 混合奖励5 Observation Signals 观测信号参考链接1 前言 为了指导学习过程,强化学习使用从环境生成的标量奖励信号。该信号衡量agent相对于任务目标的性能。换句话说,对于给定的观察(…

来看看投资界最关心的 Sora 几大问题

作者&#xff1a;苍何&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;CSDN 2023 年 实力新星&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#xf…

如何查看 CPU 占用高的进程

1、使用 top 命令&#xff0c;查看 cpu 占用超过 100% 2、查看哪个进程占用 cpu 最高&#xff08;该案例使用阿里的 arthas 来查看&#xff09; 2.1 下载&#xff1a;curl -O https://arthas.aliyun.com/arthas-boot.jar 2.2 启动命令&#xff1a;java -jar arthas-boot.jar …

OpenAI 发布文生视频模型 Sora,普通人应该怎么做才能利益最大化?

原文链接&#xff1a; OpenAI 发布文生视频模型 Sora&#xff0c;普通人应该怎么做才能利益最大化&#xff1f; 自从 2022 年 11 月 30 日 ChatGPT 发布之后&#xff0c;每次 OpenAI 再发布新功能都跟过年一样&#xff0c;那叫一个热闹。 包括 GPT 4.0&#xff0c;GPT Store&…

深入浅出JVM(一)之Hotspot虚拟机中的对象

本篇文章思维导图 对象的创建 对象的创建可以分为五个步骤:检查类加载,分配内存,初始化零值,设置对象头,执行实例构造器 类加载检查 HotSpot虚拟机遇到一条new指令,会先检查能否在常量池中定位到这个类的符号引用,检查这个类是否类加载过 没有类加载过就去类加载类加载过就进…

粉丝2000 啦,选对赛道,做正确的事情,粉丝涨到2000说明大家对我做的事情还是非常的认可的,继续坚持中,将相关资料做了视频整理

1&#xff0c;见证历史成长&#xff0c;粉丝涨到 2000 啦 2&#xff0c;把视频进行分类&#xff0c;研究xinference相关视频 【xinference】&#xff08;1&#xff09;&#xff1a;在autodl上&#xff0c;使用xinference部署chatglm3大模型&#xff0c;支持函数调用&#xff0…

网站常见的攻击类型有什么,如何针对性防护

在互联网时代&#xff0c;几乎每个网站都存在着潜在的安全威胁。这些威胁可能来自人为失误&#xff0c;也可能源自网络犯罪团伙所发起的复杂攻击。无论攻击的本质如何&#xff0c;网络攻击者的主要动机通常是谋求经济利益。这意味着不管是什么网站类型潜在的威胁一直都存在。 在…

简单的服务器取证

一次简单的服务器取证入门 检材&#xff1a;https://pan.baidu.com/s/1T_OBlqe–7C-sfYhYyMZjQ?pwd8e19 目录 1、系统的内核版本2、系统的历史命令第32条3、SSH服务的开放端口4、宝塔面板的用户名5、宝塔面板的端口号6、面板上的网站域名7、面板是否开启了SSL服务8、面板别名是…

AD24-PCB间距规则、布线线宽规则、规则使能优先级设置

一、PCB间距规则 1、设计-规则 2、忽略焊盘间距要打勾&#xff0c;不然会出现右边的错误 3、可进行不同间距要求添加 二、布线规则 1、电源线宽&#xff0c;根据载流&#xff0c;进行加宽 非阻抗走线&#xff0c;根据生成要求 大于6mil&#xff0c;成本最低&#xff1b;…

【git 使用】使用 git rebase -i 修改任意的提交信息/合并多个提交

修改最近一次的提交信息的方法有很多&#xff0c;可以参考这篇文章&#xff0c;但是对于之前的提交信息进行修改只能使用 rebase。 修改提交信息 假设我们想修改下面这个提交信息&#xff0c;想把【登录】改成【退出登录】步骤如下 运行 git rebase -i head~3 打开了一个文本…

C++之C++输入输出流

目录 1、输入输出的含义 2、C输入输出机制 2.1、"流"的概念 2.2、C常用流类型 2.3、流类型之间的关系 2.4、流的状态 2.5、管理流的状态 2.6、流的通用操作 2.7、缓冲区 2.7.1、为什么要引入缓冲区呢&#xff1f; 2.7.2、缓冲区要做哪些工作&#xff1f; …

Stable Diffusion 模型下载:A-Zovya RPG Artist Tools(RPG 大师工具箱)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 A-Zovya RPG Artist Tools 模型是一个针对 RPG 训练的一个模型&#xff0c;可以生成一些 R…

useGeneratedKeys=“true” keyProperty=“id”

useGeneratedKeys“true” keyProperty“id” 这个注解在xml文件的insert方法中&#xff0c;可以用于返回主键值&#xff1b; 并且useGeneratedKeys参数只针对 insert 语句生效&#xff0c;默认为 false&#xff1b;

Java - @JSONField和@JsonProperty注解

JSONField注解是阿里巴巴的fastjson框架中的注解&#xff0c;用于指定JSON字符串中的属性名和Java对象中的属性名之间的映射关系 JsonProperty注解是Jackson框架中的注解&#xff0c;用法类似于JSONField&#xff0c;也是指定JSON字符串中的属性名和Java对象中的属性名之间的映…