g++ 命令行编译

news2024/9/20 14:31:17

一.创建项目并编译和执行

要创建的项目的结构
在这里插入图片描述

创建main.cpp

# 创建一个项目
sudo mkdir GCC_Demo_swap
# 进入该项目
cd GCC_Demo_swap
# 创建该项目的主程序
sudo vim main.cpp
#include <iostream>
#include "swap.h"
using namespace std;

int main(int argc,char **argv)
{
        int val1=10;
        int val2=20;
        double d=0.0;

        cout<<"Before swap:"<<endl;
        cout<<"val1 = "<<val1<<endl;
        cout<<"val2 = "<<val2<<endl;
        swap(val1,val2);
        cout<<"After swap:"<<endl;
        cout<<"val1="<<val1<<endl;
        cout<<"val2="<<val2<<endl;
		return 0;
}

创建 include和里面的swap.h

# 创建include目录
sudo mkdir include
cd include
vim swap.h

# 创建src目录
sudo mkdir src
# 进入该目录
cd src
# 创建 swap.cpp文件
sudo vim swap.cpp

随便写个头文件

#ifndef HELLO_H
#define HELLO_H

class hello{
        public:
                int plus(int a,int b);
};
#endif

创建src和里面的 swap.cpp

#include "swap.h"

void swap(int &a,int& b)
{
        int temp;
        temp=a;
        a=b;
        b=temp;
}

编译该项目

返回到项目根目录

cd ..
# g++后的main.cpp src/swap.cpp表示要编译的文件,当前目录的文件和src目录下的文件
# -I后跟文件名是指定头文件搜索目录,此时让swap.cpp向include包中寻找头文件。
g++ main.cpp src/swap.cpp -Iinclude
ls

生成了可执行文件a.out
在这里插入图片描述

执行生成的可执行文件

# 执行生成的可执行文件
./a.out

在这里插入图片描述

打印警告信息 并使用 c++11标准进行编译

# -Wall打印警告信息,-std-c++11表示用该标准进行编译,-o b.out是指定输出文件为b.out
g++ main.cpp src/swap.cpp -Iinclude -Wall -std=c++11 -o b.out

在这里插入图片描述
执行生成的可执行文件
在这里插入图片描述

二.什么是静态库和动态库?

1.什么是库
库是写好的现有的,成熟的,可以复用的代码。
现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。
库有两种:静态库(.a、.lib)**动态库(.so、.dll)。

回顾一下,将一个程序编译成可执行程序的步骤:
在这里插入图片描述

在这里插入图片描述
C/C++静态库与动态库详解
https://zhuanlan.zhihu.com/p/591249908?utm_id=0

二.生成库文件并编译

# 删除以.out结尾的的可执行文件
rm *.out

把main.cpp用不到的 double 那一行删除

2.1 生成静态库

要生成静态库,必须先生成 .o 结尾的二进制文件。静态库本质是一个归档。
生成 swap.o文件

 cd src
 # -c 表示生成.o格式的二进制文件, -指定要导入的库
 g++ swap.cpp -c -I../include

在这里插入图片描述

# ar是归档命令,将swap.o归档为libswap.a的静态文件
ar rs libswap.a swap.o

在这里插入图片描述

# -l指定要链接的库文件路径, -L指定要链接的库文件 | 
g++ main.cpp -lswap -Lsrc -Iinclude -o static_main

在这里插入图片描述

执行

./static_main

2.2 生成动态库

在这里插入图片描述

参考视频:
https://www.bilibili.com/video/BV1fy4y1b7TC/?p=9&spm_id_from=333.337.top_right_bar_window_history.content.click&vd_source=ebc47f36e62b223817b8e0edff181613

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

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

相关文章

05 | 类型匹配:怎么切除臃肿的强制转换

Java 的模式匹配是一个新型的、而且还在持续快速演进的领域。类型匹配是模式匹配的一个规范。类型匹配这个特性&#xff0c;首先在 JDK 14 中以预览版的形式发布。在 JDK 15 中&#xff0c;改进的类型匹配再次以预览版的形式发布。最后&#xff0c;类型匹配在 JDK 16 正式发布。…

管理类联考——数学——汇总篇——知识点突破——数据分析——记忆

文章目录 考点记忆/考点汇总——按大纲 整体目录大纲法记忆宫殿法绘图记忆法 局部数字编码法对号不对号 归类记忆法重点记忆法歌决记忆法口诀&#xff1a;加法分类&#xff0c;类类相加&#xff1b;乘法分步&#xff0c;步步相乘。 谐音记忆法涂色 理解记忆法比较记忆法转图像记…

TikTok商店的未来:马来西亚建议与全球挑战

TikTok商店一直以来备受关注&#xff0c;但最近在马来西亚引发了一场有关其发展方向和地方利益的争议。10月11日&#xff0c;马来西亚电子商务委员会主席 Ganesh Kumar Bangah就TikTok Shop 在马来西亚的问题进行了讨论。他指出禁止TikTok商店将严重影响许多当地中小企业、创造…

Leetcode—7.整数反转【中等】

2023每日刷题&#xff08;十&#xff09; Leetcode—7.整数反转 关于为什么要设long变量 参考自这篇博客 long可以表示-2147483648而且只占4个字节&#xff0c;所以能满足题目要求 复杂逻辑版实现代码 int reverse(int x){int arr[32] {0};long y;int flag 1;if(x <…

【23真题】准考证抄出来的题目,还原度99%以上!

今天分享的是23年成都信息工程大学803的信号与系统试题及解析。 还记得22年版本是东拼西凑&#xff0c;只是通过知识点还原的类题。今年多亏去年考研的同学&#xff0c;帮我在准考证抄出来了一份&#xff0c;让我可以帮助大家做解析&#xff01;这份真题虽然也是回忆版&#x…

java时间解析生成定时Cron表达式工具类

Cron表达式工具类CronUtil 构建Cron表达式 /****方法摘要&#xff1a;构建Cron表达式*param taskScheduleModel*return String*/public static String createCronExpression(TaskScheduleModel taskScheduleModel){StringBuffer cronExp new StringBuffer("");if(…

PLC、触摸屏、上位机之间如何实现无线数据交互功能?

本文以组态王与西门子触摸屏和2台西门子S7-200SMART为例&#xff0c;介绍组态王、触摸屏与多台 PLC在Profinet协议下的自组网无线通信实现过程。在本方案中采用了西门子PLC无线通讯终端——DTD418M&#xff0c;作为实现无线通讯的硬件设备。我们无需更改网络参数和原有程序&…

Talk | 香港科技大学博士生叶汉荣:面向2D/3D场景理解的多任务学习

本期为TechBeat人工智能社区第540期线上Talk&#xff01; 北京时间10月25日(周三)20:00&#xff0c;香港科技大学博士生—叶汉荣的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “面向2D/3D场景理解的多任务学习”&#xff0c;分享了他的团队在多任…

小白必看!画出自己第一个界面,PyQt5安装以及使用

目录 1&#xff0c;介绍 2&#xff0c;windows安装 安装PyQt5-tools 设置环境变量 验证是否安装成功 QT Designer 3&#xff0c;Mac平台安装 安装PyQt5 安装 Qt Creater 验证是否安装成功 4&#xff0c;使用 PyCharm 开发 4.1 新建工程 4.2 添加外部工具 hellowo…

危机现场 | 令人窒息的彩色气球

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 阿福 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 1986年&#xff0c;美国克利夫兰城市广场上&#xff0c; 人们正期盼一场即将载入史册的募捐活动。 而此时&#xff0…

一个全响应式的企业级物联网平台,开源了

JetLinks 是一个开源的、企业级的物联网平台&#xff0c;它集成了设备管理、数据安全通信、消息订阅、规则引擎等一系列物联网核心能力&#xff0c;支持以平台适配设备的方式连接海量设备&#xff0c;采集设备数据上云&#xff0c;提供云端 API&#xff0c;通过调用云端 API 实…

HackTheBox - Starting Point -- Tier 0 --- Explosion

文章目录 一 题目二 实验过程 一 题目 Tags Network、Programming、RDP、Reconnaissance、Weak Credentials译文&#xff1a;网络、编程、RDP、侦察、凭证薄弱Connect To attack the target machine, you must be on the same network.Connect to the Starting Point VPN us…

代码随想录 | Day61 and 62

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 今日学习目标一、算法题1.下一个更大元素 II2.接雨水3.柱状图中最大的矩形 今日心得学习及参考书籍 今日学习目标 下一个更大元素 II&#xff08;503&#xff09; …

InstructionGPT

之前是写在[LLM&#xff1a;提示学习Prompt Learning]里的&#xff0c;抽出来单独讲一下。 基本原理 InstructGPT/ChatGPT都是采用了GPT-3的网络结构&#xff0c;通过指示学习构建训练样本来训练一个反应预测内容效果的奖励模型&#xff08;RM&#xff09;&#xff0c;最后通过…

轻松批量剪辑:将MP4视频转换为FLV格式

在视频制作和编辑领域&#xff0c;批量剪辑和格式转换是非常常见的操作。将MP4视频转换为FLV格式&#xff0c;可以帮助我们更好地管理和发布视频内容。本文将介绍云炫AI智剪如何轻松批量剪辑&#xff0c;将MP4视频转换为FLV格式&#xff0c;帮助您提高工作效率&#xff0c;减少…

避雷!又有2本期刊被标记“On Hold”!含中科院2区(TOP),共8本有风险!

期刊动态&#xff1a;新增2本期刊“On Hold” 最新&#xff0c;又有2本期刊被科睿唯安标记为「On Hold」&#xff01;这2本期刊分别为MIGRATION LETTERS和REVISTA DE GESTAO E SECRETARIADO-GESEC。 目前科睿唯安官网&#xff1a;共有8本期刊被标记为「On Hold」&#xff0c;…

极盾故事|某头部私募基金“扩展检测响应XDR平台”建设

极盾科技助力某头部私募基金&#xff0c;基于极盾析策&#xff0c;打造扩展检测响应XDR平台&#xff1a; 1、接入堡垒机、网关、Gitlab、资产类接口、登录数据源、运维网络设备等日志&#xff0c;实现日均十亿级别数据量分析&#xff0c;日均安全告警数量从数万降至100条左右&a…

【大数据】Hadoop环境搭建及运行

Hadoop概述 Hadoop 是一个由 Apache 基金会所开发的 分布式系统基础架构 。主要解决&#xff0c;海量数据的 存储 和海量数据的 分析计算 问题。广义上来说&#xff0c; Hadoop 通常是指一个更广泛的概念 —— Hadoop 生态圈 。 Hadoop优势 高可靠性&#xff1a;Hadoop底层维…

使用Jetpack Compose构建Flappy Musketeer街机游戏

使用Jetpack Compose构建Flappy Musketeer街机游戏 一步一步创建沉浸式移动游戏的指南 引言 Flappy Musketeer不仅是又一个移动游戏&#xff1b;它将令人上瘾的“轻点飞行”游戏玩法和引人入胜的视觉效果融合在一起&#xff0c;吸引玩家进入埃隆马斯克&#xff08;Elon Musk…