WSL VSCode运行C++项目

news2024/11/24 17:28:42

WSL VSCode运行C++项目

    • collect2: error: ld returned 1 exit status
    • boost库的链接
      • 安装并编译boost库:
    • 链接库(!!这一步有错误,下面会改正)
    • /usr/include/boost/python/detail/wrap_python.hpp:57:11: fatal error: pyconfig.h: No such file or directory
    • file format not recognized
      • gch文件
      • boost链接错误
    • task.json文件中-g参数包含文件问题
    • 验证
    • 文件版本

本文按照出错信息进行展开。

collect2: error: ld returned 1 exit status

在这里插入图片描述

其实这个问题是上面有很多其他的问题:
在这里插入图片描述
所以其实是boost库的依赖问题,这几个库要链接;

boost库的链接

首先是自己boost库最开始的安装就有问题,所以这里重新安装了一下。

安装并编译boost库:

在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)
使用第二种方法安装。

注意:

  1. 下载压缩包时,使用powershell,
    在这里插入图片描述
    $前 就是当前路径,~ 表示当前用户的home
    所以下载完之后再home文件夹中。
  2. 编译之后,boost文件夹就会加入到包含搜索路径了
    在这里插入图片描述

链接库(!!这一步有错误,下面会改正)

这样,再在task.json中,添加以下两句即可:
在这里插入图片描述
这样就解决了这两个问题。
-L 就是g++ 链接指令参数

不过这里有错误,就是-L下面这一行要分开写,不能这么写,下面这么写才是对的,所以VSCode不太智能,还是CMake比较好hhh。(具体报错下面会写道)
在这里插入图片描述

/usr/include/boost/python/detail/wrap_python.hpp:57:11: fatal error: pyconfig.h: No such file or directory

在这里插入图片描述

这其实是,这几个文件的路径,没有包含在环境变量中,所以编译器找不到,尝试了很久,最后就是直接搜索几个文件,然后把这个文件的路径,放到task.json中。

.hpp是对.h的包装。
对于cl.h文件的缺失,在powershell运行这条命令,就可以。注意,不是哪里输命令就装哪里的,应该是装到一个公用的地方

sudo apt-get install opencl-headers

不过其实本地是有的,只要搜索一下文件位置,然后放到task.json中即可:
在这里插入图片描述

file format not recognized

在这里插入图片描述
从这里的报错信息来看,ld,说明是链接器报错,应该是链接脚本出错了
这里其实是两个问题。

gch文件

在这里插入图片描述
是静态链接和动态链接的问题,gch是预编译头,不小心把.h也编译了,就出现了gch文件。那么找到路径,翻到最后发现有这么多gch文件,这已经不知道下午3点多,编译的时候干了啥,蜜汁操作给自己编译出了这么多.gch文件。把所有的gch文件删除之后,就可以了。

所以,实在解决不了,就去看看路径下面,仔细翻翻文件是什么样的
加粗样式

boost链接错误

上面修改完最后一个错误之后,现在报了更多错误,但是之前是两种错误,现在只有一种,赢!!!(lol)
在这里插入图片描述
那么通过分析最终的编译命令,如下图

其实按理说,应该是自己写g++的编译命令,这样更不容易出错,因为是刚开始,所以就用F5直接运行,在powershell会自动弹出使用的编译命令,这里的编译命令中使用的参数,其实就是task.json中配置的args参数,所以task.json要配置好,这里出错也是因为task.json的问题

在这里插入图片描述
在这里插入图片描述
发现这里链接的命令出错了,这几个应该是分成多个引号的,现在
在这里插入图片描述
这几个-l被包含在了同一对 “ ” 中,所以错了。只需要如下修改即可:
在这里插入图片描述
vscode太不智能了,cmake都是写一行的。

task.json文件中-g参数包含文件问题

在这里插入图片描述
在这里插入图片描述
可以看到,这个工程中还有两个cpp文件。而在下面的task.json文件中,-g参数也就是调试参数,只使用了一个参数,“${file}”,代表当前活动窗口,也就是我们要在运行的时候,点到最上层的top.cpp才能运行,但是这样就没有包含进上面的两个cpp,于是可以把这两个文件添加进来,直接下一行添加即可,不需要再次写“-g”。
在这里插入图片描述
添加完之后又报错,

因为之前把几个程序中错误给改了,现在只有最后一个错误了,
在这里插入图片描述
c++20新语法,解决起来相当复杂。

最后发现问题是在这里:

我们观察到,官方文件SConstruct这个脚本文件中,只包含了这两个cpp,如下图,另外一个cpp是没有包含进来的,所以我们可以在-g参数中除去第三个文件。
在这里插入图片描述
在这里插入图片描述
如上修改,即可以了。

所以要学会看官方的文档,以及文档目录

这里修改的-g参数,是make_shared参数,和内存分配有关,然后这里的这个报错,就是跟allocator相关,allocator是内存分配器
在这里插入图片描述

所以,第三个cpp文件,是多余的,官方忘记删了,不删掉问题就大了,反正不要一起编译,估计是api冲突了,一个旧版一个新版,
而我们改的-g就是改的那个是make_shared的模板参数,编译器会根据这个去约束后面的参数。make_shared是智能指针,用引用计数来实现内存管理。然后就可以了。

验证

至此,使用VSCode的json文件配置方式就完成了。

可以使用例子进行一下验证。在powershell输入bash run_example.sh即可,注意在本工程目录下输入,不是在虚拟机目录下直接运行。已经可以输出了。
也可以 ./工程输出可执行文件名 --HW_file=‘xxxxx.m’
(没有.o的是链接后的可执行文件,o是临时的,中间文件,汇编文件)

文件版本

如果scons直接运行SConstruct文件,不用修改文件中的错误也可以运行成功。这就比较奇怪了hhhh
结果发现是有两个版本的,脚本自动使用了第二个版本的,所以,还是用脚本吧。
在这里插入图片描述

可以和上面的运行结果作比较,在powershell中使用diff指令

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

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

相关文章

RK3588平台开发系列讲解(SARADC篇)SARADC的工作流程

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、SARADC驱动二、SARADC常用接口三、SARADC源码分析1、SARADC驱动注册2、用例分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍SARADC的源码分析和工作流程。 一、SARADC驱…

【Flink】需求实现之独立访客数量的计算 和 布隆过滤器的原理及使用

文章目录一 独立访客数量计算二 布隆过滤器1 什么是布隆过滤器2 实现原理(1)HashMap 的问题(2)布隆过滤器数据结构3 使用布隆过滤器去重一 独立访客数量计算 public static void main(String[] args) throws Exception{StreamExe…

Locust学习记录3-用户类属性【host attribute,tasks attribute】

host attribute(主机属性) host属性是家长主机的URL前缀(即“https://www.baidu.com”)。 这是在Locust的web UI 或命令行上指定的,在Locust【--host】启动时使用该选项 【--host】如果在用户类中声明了一个host属性,那么在命令…

答网友提问 - SAP Business Technology Platform(BTP) 的计费模式

我的知识星球 有朋友向我提问: S4HANA(本地部署或云版)跟SAP家族系统以及非SAP系统的集成,sap的标准/推荐做法是通过BTP还是直接连接,或者是根据目标系统分别选择?有参考链接最好了。 还有BTP的收费模式是什么样的,是不…

业聚医疗通过聆讯:上半年营收6885万美元 钱永勋为实控人

雷递网 雷建平 12月5日血管介入器械公司――业聚医疗集团有限公司(OrbusNeich Medical Group Limited)(简称“业聚医疗”)日前通过聆讯,准备在香港上市。上半年营收6885万美元业聚医疗总部位于中国香港,是一…

springboot解决跨域问题

springboot解决跨域问题 文章目录springboot解决跨域问题一、跨域是什么?二、java解决CORS请求的方式1.返回新的CORSFilter(全局跨域)2.重写WebMvcConfigurer(全局跨域)3.使用注解CorsOrigin4.手动设置响应头&#xff…

如何安装Ambari集群_大数据培训

注意:以下操作主节点操作即可 1 制作本地源 制作本地源是因为在线安装Ambari太慢。制作本地源只需在主节点上进行。 1.1 配置HTTPD 服务 配置HTTPD 服务到系统层使其随系统自动启动 [roothadoop102 ~]# chkconfig httpd on [roothadoop102 ~]# service httpd …

[附源码]Python计算机毕业设计Django网上电影购票系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

股票量化分析工具QTYX使用攻略——均线系统多头排列选股

搭建自己的量化系统如果要长期在市场中立于不败之地!必须要形成一套自己的交易系统。如何学会搭建自己的量化交易系统?边学习边实战,在实战中学习才是最有效地方式。于是我们分享一个即可以用于学习,也可以用于实战炒股分析的量化…

【软件测试】软件测试工程师职位核心任务?测试人测试职业发展?

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 你认为软件测试工程…

RDMA测试集:preftest安装与使用

RDMA测试集:preftest安装与使用 perftest是一组基于uverbs编写的测试程序,是RDMA性能相关的benchmark。可用于软硬件调优以及功能测试。 源码位置 linux-rdma/perftest: Infiniband Verbs Performance Tests (github.com) perftest测试软件包含的测试…

111个Python数据分析实战项目,代码已跑通,数据可下载

写在前面: 这里整理了111个数据分析的案例,每一个都进行了严格的筛选,筛选标准如下: 1. 有干货:杜绝纯可视化、统计性分析,有一定比例的讲解性文字 2. 可跑通:所有代码均经过测试,…

框架的优点(SpringBoot VS Servlet)

创建项目比较: 创建Servlet项目:流程复杂,容易出错,这里可以参考之前写的一篇博客: 如何创建一个Servlet项目(Maven)?_crazy_xieyi的博客-CSDN博客_maven创建servlet 1.创建maven…

【JavaSE】HashMap底层原理、面试题详解

【JavaSE】HashMap底层原理、面试题详解 文章目录【JavaSE】HashMap底层原理、面试题详解一:HashMap的数据结构1:JDK1.72:JDK1.8二:hash 方法的原理三:HashMap的put流程四:HashMap的get流程五:H…

ARM基础(2):模式和特权等级(User/Thread mode和Privileged level)

Cortex-M3处理器支持两种模式和两种特权级别。 如下图所示,当处理器运行于Thread mode时,它可以处于Privileged或User级别;而Handler mode下,只能处于Privileged级别。当处理器复位完毕后,处于Thread mode。 在User级…

SSM(spring+springmvc+mybatis)完全注解开发整合

SSM(springspringmvcmybatis)完全注解开发整合 目录结构如图: 创建数据库 create database mydb; use mydb; create table tbl_users(id int primary key auto_increment,username varchar(20),password varchar(20),age int,birthday date );insert tbl_users(…

[Cortex-M3]-4-如何在内嵌RAM中运行程序

[Cortex-M3]-1-启动流程-启动文件[Cortex-M3]-2-map文件解析[Cortex-M3]-3-分散加载文件解析(.sct)[Cortex-M3]-4-如何在内嵌RAM中运行程序 1 定义items 在进行项目开发时,可以在project items中创建debug和release,并确定。 平时调试下拉选…

web结课作业的源码——HTML+CSS+JavaScript仿oppo官网手机商城(1页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

15、简单了解Vue

1、vue概述 Vue是一套前端框架,可以免除原生JavaScript中的DOM操作,简化书写。 基于MVVM(Model-View-View Model)思想,实现数据的双向绑定,将编程的关注点放在数据上 vue的官网:https://cn.v…

电脑数据转移到新电脑?换新电脑如何转移软件

电脑数据转移到新电脑?许多用户在下载游戏的时候,没有更改默认安装位置,直接把游戏安装到了C盘里,结果导致C盘空间不足,于是希望将游戏移动到其他驱动器以释放空间。也有的用户是更换了电脑,不想重新安装游…