g++ 13.2.0 编译 C++模块

创建并使用自己的C++模块(Windows10+MSVC)-CSDN博客

在这篇文章中使用的是MSVC来编译模块和使用模块的代码,现在换g++再来编译一次。

环境:

ubuntu 23.10

sharp@sharp-vbox ~> g++ --version 
g++ (Ubuntu 13.2.0-4ubuntu3) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

源文件还是之前文章中的那两个,没有任何变化。

sharp@sharp-vbox:~/Prog_Cpp/001_module$ ls
module01_user.cpp  module_Vector.cppsharp@sharp-vbox:~/Prog_Cpp/001_module$ g++ -c -std=c++20 -fmodules-ts module_Vector.cpp 
sharp@sharp-vbox:~/Prog_Cpp/001_module$ ll
total 24
drwxrwxr-x 3 sharp sharp 4096  4月 11 04:11 ./
drwxrwxr-x 3 sharp sharp 4096  4月 11 03:42 ../
drwxrwxr-x 2 sharp sharp 4096  4月 11 04:11 gcm.cache/
-rw-rw-r-- 1 sharp sharp  383  4月 11 03:45 module01_user.cpp
-rw-rw-r-- 1 sharp sharp  635  4月 11 03:45 module_Vector.cpp
-rw-rw-r-- 1 sharp sharp 2368  4月 11 04:11 module_Vector.osharp@sharp-vbox:~/Prog_Cpp/001_module$ g++ -std=c++20 -fmodules-ts -c module01_user.cpp 
sharp@sharp-vbox:~/Prog_Cpp/001_module$ ls
gcm.cache  module01_user.cpp  module01_user.o  module_Vector.cpp  module_Vector.osharp@sharp-vbox:~/Prog_Cpp/001_module$ ls ./gcm.cache/
Vector.gcm
sharp@sharp-vbox:~/Prog_Cpp/001_module$ cp ./gcm.cache/Vector.gcm .
sharp@sharp-vbox:~/Prog_Cpp/001_module$ ll
total 32
drwxrwxr-x 3 sharp sharp 4096  4月 11 04:14 ./
drwxrwxr-x 3 sharp sharp 4096  4月 11 03:42 ../
drwxrwxr-x 2 sharp sharp 4096  4月 11 04:12 gcm.cache/
-rw-rw-r-- 1 sharp sharp  383  4月 11 03:45 module01_user.cpp
-rw-rw-r-- 1 sharp sharp 3136  4月 11 04:14 module01_user.o
-rw-rw-r-- 1 sharp sharp  635  4月 11 03:45 module_Vector.cpp
-rw-rw-r-- 1 sharp sharp 2368  4月 11 04:12 module_Vector.o
-rw-rw-r-- 1 sharp sharp 2816  4月 11 04:14 Vector.gcmsharp@sharp-vbox:~/Prog_Cpp/001_module$ g++ -o module01_user module01_user.o module_Vector.o
sharp@sharp-vbox:~/Prog_Cpp/001_module$ ll
total 52
drwxrwxr-x 3 sharp sharp  4096  4月 11 04:15 ./
drwxrwxr-x 3 sharp sharp  4096  4月 11 03:42 ../
drwxrwxr-x 2 sharp sharp  4096  4月 11 04:12 gcm.cache/
-rwxrwxr-x 1 sharp sharp 17128  4月 11 04:15 module01_user*
-rw-rw-r-- 1 sharp sharp   383  4月 11 03:45 module01_user.cpp
-rw-rw-r-- 1 sharp sharp  3136  4月 11 04:14 module01_user.o
-rw-rw-r-- 1 sharp sharp   635  4月 11 03:45 module_Vector.cpp
-rw-rw-r-- 1 sharp sharp  2368  4月 11 04:12 module_Vector.o
-rw-rw-r-- 1 sharp sharp  2816  4月 11 04:14 Vector.gcm
sharp@sharp-vbox:~/Prog_Cpp/001_module$ ./module01_user 
sum is: 1.31116
sharp@sharp-vbox:~/Prog_Cpp/001_module$ 

可以看到,编译模块源文件的命令为:

g++ -c -std=c++20 -fmodules-ts module_Vector.cpp

编译完成后生成一个子目录:gcm.cache,里面包含文件:Vector.gcm,这个就是模块文件。

编译使用模块的源文件也是类似:

g++ -std=c++20 -fmodules-ts -c module01_user.cpp

然后将Vector.gcm文件拷贝至和obj同一个目录下,执行链接命令:

g++ -o module01_user module01_user.o module_Vector.o

可以看到,正确生产可执行文件,且执行结果正确。

-fmodules-ts:支持模块特性,还是试验阶段。

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

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

相关文章

深度学习——离线数据增强——图片resize

因为有一批数据有点儿小,数据质量不佳,为了标注方便使用数据增强将数据固定在1080P,方便标注, # -*- coding: UTF-8 -*- """ Project :yolov5_relu_fire_smoke_v1.4 IDE :PyCharm Au…

STM32电机控制SDK介绍

目录 一、STM32 MC SDK包含以下项目: 二、电机控制应用流程 三、 MC 软件应用程序设计工作流程 四、STM32 MC固件 五、PMSM FOC 库 一、STM32 MC SDK包含以下项目: STM32 MC firmwareSTM32 MC WorkbenchSTM32 MC Board ManagerSTM32 Motor PilotTh…

项目从 Mysql切换 PostgreSQL 改造及踩坑记录

0、前言 原项目框架 SpringBoot MybatisPlus Mysql 1、切换流程 1.1、项目引入postgresql驱动包 由于我们要连接新的数据库&#xff0c;理所当然的要引入该数据库的驱动包&#xff0c;这与mysql驱动包类似 <dependency><groupId>org.postgresql</groupId…

MongoDB常用命令总结

《【快捷部署】017_MongoDB&#xff08;6.0.14&#xff09;》 讲述了如何快捷部署MongoDB&#xff0c;今天我们来总结一下MongoDB常用的shell命令。 一、基本操作&#xff08;CRUD&#xff09; #创建集合&#xff0c;名为 users db.createCollection("users")# 插入…

免费搭建幻兽帕鲁服务器(Palworld免费开服教程)

随着互联网技术的不断发展和普及&#xff0c;网络游戏已经成为了人们休闲娱乐的重要方式之一。而在众多网络游戏中&#xff0c;幻兽帕鲁以其独特的游戏设定和玩法&#xff0c;吸引了大量玩家的关注。为了满足广大玩家的需求&#xff0c;本文将介绍如何免费搭建幻兽帕鲁服务器&a…

Green Hills 自带的MULTI调试器查看R7芯片寄存器

Green Hills在查看芯片寄存器时需要导入 .grd文件。下面以R7为例&#xff0c;演示一下过程。 首先打开MULTI调试器&#xff0c;如下所示View->Registers&#xff1a; 进入如下界面&#xff0c;选择导入寄存器定义文件.grd&#xff1a; 以当前R7芯片举例&#xff08;dr7f7013…

Python+Appium自动化测试(ios+Android)

一、软件安装 安装清单&#xff1a; JDKPythonnode.jsandroid-sdk(作者通过Android Studio安装)iOS-deploybrewlibimobiledevice依赖库ideviceinstallercarthage依赖库 appium-doctor&#xff08;安装后可在命令行中通过命令:appium-doctor检查还少啥&#xff09; WebDriverAg…

应急响应-战中反制对抗上线CSGoby蚁剑Sqlmap等安全工具

知识点 战中-反制-安全工具篇CS反制(有版本限制) Goby反制&#xff08;有版本限制&#xff0c;新版goby已修复&#xff09; Antsword反制(有版本限制&#xff0c;别人也不一定用蚁剑) AWVS反制(有版本限制&#xff0c;在awvs 10版本存在&#xff09; BURP反制(有版本限制&…

基于python的天气数据可视化系统、Flask框架,爬虫采集天气数据,可视化分析

系统介绍 基于Python的天气预测可视化分析系统&#xff0c;该项目的主要流程和功能包括&#xff1a; 数据获取&#xff1a; 使用Python的pandas库从2345天气网&#xff08;http://tianqi.2345.com/Pc/GetHistory&#xff09;抓取山东省各市区县在2021年至2023年间的天气历史数…

C语言 | Leetcode C语言题解之第21题合并两个有序链表

题目&#xff1a; 题解&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {/…

钉钉和金蝶云星空接口对接实战

钉钉和金蝶云星空接口对接实战 对接源平台:钉钉 钉钉&#xff08;DingTalk&#xff09;是阿里巴巴集团打造的企业级智能移动办公平台&#xff0c;是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉…

django 模板js文件为什么最后引入

<!-- 引入Bootstrap JS --> <script src"https://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js"></script> 为什么最后引入例子 <!-- templates/inspection_records.html --><!DOCTYPE html> <html lang…

ShardingSphere再回首

概念&#xff1a; 连接&#xff1a;通过协议 方言及库存储的适配&#xff0c;连接数据和应用&#xff0c;关注多模数据苦之间的合作 增量&#xff1a;抓取库入口流量题提供重定向&#xff0c; 流量变形(加密脱敏)/鉴权/治理(熔断限流)/分析等 可插拔&#xff1a;微内核 DDL:cr…

【C#】C#匹配两个相似的字符串莱文斯坦距离

文章目录 一、问题描述二、代码三、解释 一、问题描述 需要匹配多个类似的内容&#xff0c;并且要求相似度在70%以上并且长度相近&#xff0c;可以在处理每个匹配项时&#xff0c;将其与所有目标进行比较&#xff0c;并筛选出符合条件的匹配项。 二、代码 using System; usi…

2024最新AI系统【SparkAI】,ChatGPT商业运营版系统源码/ai问答/ai绘画/GPTs,SunoAI音乐生成大模型/带分销AIGC搭建部署教程

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的ai智能问答系统和Midjourney-AI绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已…

vue 插槽使用

父控件 使用子控件时&#xff0c;为了能让子控件 在控件上面使用灵活多变&#xff0c;这里使用插槽。 简单插槽使用 <script>// 创建 vue实例const app Vue.createApp({ data() { return {text: 提交 } },// slot 插槽// slot 中使用的数据&#xff0c;作用域的问题&…

如何在 OpenLDAP 服务器上更改账户密码

简介 LDAP 系统通常用于存储用户账户信息。事实上&#xff0c;一些最常见的 LDAP 认证方法涉及存储在 LDAP 条目中的账户信息。 无论您的 LDAP 条目是被外部服务用于账户信息还是仅用于 LDAP 特定的授权绑定&#xff0c;密码管理都变得很重要。在本指南中&#xff0c;我们将讨…

MySQL进阶一

目录 1.使用环境 2.条件判断 2.1.case when 2.2.if 3.窗口函数 3.1.排序函数 3.2.聚合函数 ​​​​​​​3.3.partiton by ​​​​​​​3.4.order by 4.待续 1.使用环境 数据库&#xff1a;MySQL 8.0.30 客户端&#xff1a;Navicat 15.0.12 2.条件判断 2.1.ca…

手机银行客户端框架之EMAS介绍

EMAS简介 阿里巴巴应用研发平台&#xff08;Enterprise Mobile Application Studio&#xff0c;简称EMAS&#xff09;&#xff0c;是面向全端场景&#xff08;移动App、H5应用、小程序、Web应用、PC应用等&#xff09;的一站式应用研发平台。EMAS基于广泛的云原生技术&#xf…

5G智慧港口简介(一)

引言 港口作为交通运输的枢纽,在促进国际贸易和地区发展中起着举足轻重的作用,全球贸易中约 90% 的贸易由海运业承载,作业效率对于港口至关重要。在“工业 4.0”、“互联网 +”大发展的时代背景下,港口也在进行数字化、全自动的转型升级。随着全球 5G 技术浪潮的到来,华为…