Linux下C++开发笔记--g++命令

news2024/10/2 14:28:11

目录

1--前言

2--开发环境搭建

3--g++重要编译参数

4--实例


1--前言

最近学习在linux环境下进行C++开发的基础知识,参考的教程是基于VSCode和CMake实现C/C++开发 | Linux篇,非常适合小白入门学习。

2--开发环境搭建

①安装gcc、g++和gdb:

sudo apt update

sudo apt install build-essential gdb

查看是否安装成功及版本:

gcc --version
g++ --version
gdb --version

②安装CMake:

sudo apt install cmake

查看是否安装成功及版本:

cmake --version

3--g++重要编译参数

①-g:编译带调试信息的的可执行文件

g++ -g main.cpp

②-O:优化源代码,-O1为默认优化,-O2为最常用的优化

g++ -O2 main.cpp

③-L(大L):指定库文件(动态库为.so文件,静态库为.a文件)所在的目录

④-l(小L):指定具体的库文件

g++ -L/home/liujinfu/libfolder -lmytest main.cpp

:在 /lib/usr/lib/usr/local/lib 三个目录里的库可以直接用-l参数进行链接;上述指令中,/home/liujinfu/libfolder为库所在的文件夹,mytest为对应的libmytest.a静态库libmytest.so动态库动态库的优先级高于静态库

⑤-I(大i):指定.h头文件的搜索目录

g++ -I/myinclude main.cpp

⑥-Wall:打印警告信息

⑦-w:关闭所有警告信息

g++ -Wall main.cpp

g++ -w main.cpp

⑧-std=c++11:设置编译标准

g++ -std=c++11 main.cpp

⑨-o:指定输出文件名(不指定,默认生成a.out可执行文件)

g++ main.cpp -o main

⑩-D:定义宏

4--实例

①建议如下图所示的项目:

②代码实现:

main.cpp:

#include <iostream>
#include "swap.h"

using namespace std;

int main(){
    int a = 3;
    int b = 4;
    cout << "Before Swap: " << endl;
    cout << "a = " << a << ", b = " << b << endl;
    swap(a, b);
    cout << "After Swap: " << endl;
    cout << "a = " << a << ", b = " << b << endl;
}

swap.cpp:

#include "swap.h"

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

swap.h:

void swap(int &a. int &b);

③使用g++编译:

g++ main.cpp src/swap.cpp -Iinclude -std=c++11 -O2 -Wall -o test.out

④运行可执行文件:

 

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

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

相关文章

深度学习入门(三十七)计算性能——硬件(TBC)

深度学习入门&#xff08;三十七&#xff09;计算性能——硬件&#xff08;CPU、GPU&#xff09;前言计算性能——硬件&#xff08;CPU、GPU&#xff09;课件电脑提升CPU利用率①提升CPU利用率②CPU VS GPU提升GPU利用率CPU/GPU带宽更多的CPU和GPUCPU/GPU高性能计算编程总结教材…

SpringBoot整合dubbo(一)

第一次整合&#xff0c;使用无注册中心方式 一、首先&#xff0c;项目分为三个模块&#xff0c;如下图&#xff0c;dubbo-interface&#xff08;要发布的接口&#xff09;、dubbo-provider&#xff08;接口的具体实现&#xff0c;服务提供者&#xff09;、dubbo-consumer&#…

【LeetCode-中等】63. 不同路径 II(详解)

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

VScode

VScode 下载 VScode&#xff1a;https://code.visualstudio.com/安装 汉化 Chinese (Simplified) 设置 背景色 Atom One Light Theme Color Theme 护眼色 "workbench.colorCustomizations": { // 设置背景颜色// "foreground": "#75a478",&…

List详解

一、List&#xff08;列表&#xff09; 基本的数据类型&#xff0c;列表 在redis中&#xff0c;通过相应操作可以让list变成栈、队列、阻塞队列&#xff01; 在redis中所有的list命令都是以 l 开头的 添加值 将一个值或多个值&#xff0c;插入到列表尾部&#xff08;右&…

深度学习之语义分割算法(入门学习)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 &#x1f4a1; 写在前面 一、前言 二、深度学习的图像分割分类 1.语义分割 2.实例分割 3.全景分割 三、语义分割的基本原理 四、语义分割的常用运算及评价指标 关于算法改进及论文投稿可关注并留…

【附源码】Python计算机毕业设计寿险公司保险业务管理系统

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

指令格式学习

计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程序设计、增加基本操作并行性、提高指令功能的角度来看&#xff0c;指令中应包含多种信息。但在有些指令中&#xff0c;由于部分信息可能无用&#xff0c;这将浪费指令所占的存储空间&#xff0…

python web服务windows管理工具

故事背景是这样的。。。 客户需要一些小工具&#xff0c;作为一名开发者&#xff0c;很容易的就写完了。但是呢&#xff0c;客户没有服务器&#xff0c;只能部署在windows上。由于不再一起&#xff0c;维护一个web程序&#xff0c;有时候会有些折腾&#xff0c;所以&#xff0…

Camunda 使用restapi

参考&#xff1a;http://camunda-cn.shaochenfeng.com/reference/rest/task/get-query/ 这里我就举一个流程的例子&#xff1a; 以下接口&#xff0c;除了端口和参数&#xff0c;其他无需改动 POM&#xff1a; rest 就是接口 webapp 是网页 <dependency><groupId&…

安全狗持续4年零失误实力守护金鸡颁奖典礼

11月10日-12日&#xff0c;第35届中国电影金鸡奖颁奖相关活动顺利在厦门举办。 如果用电影的方式回看他们这几天的重保值守任务的话&#xff0c;会是怎么样的? PART 1 背景交代 距离第一次接到此客户的任务&#xff0c;时间已经过去4年。今年这次任务的开启得让时间倒退到5天之…

el-tabs切换按钮定位不准确,部分内容被遮挡(前端vue实战踩坑记录)

在写项目的过程中&#xff0c;特别是vue项&#xff0c;我们最常用到的UI框架就是elementUI&#xff0c;现记录一个今天同事开发遇到的bug。 一、问题描述 页面跳转时&#xff0c;tabs切换按钮被遮挡展示不全&#xff0c;效果如图 正常情况下&#xff0c;右侧的用户后面的…应…

kotlin函数

一、Main函数 fun printHello() {println("Hello World")}printHello() Hello World在main的函数中&#xff0c;执行播放按钮&#xff0c;会编译执行&#xff0c;结果在下面显示&#xff1a; 1.1 Basic Task Create a new Kotlin file.Copy and paste the main()…

Java中方法的注意事项

C有函数&#xff0c;我们Java有方法&#xff01;实参和形参的关系方法重载public static早在初始Java的那一个博客&#xff0c;我好像就给兄弟们说过&#xff0c;在Java中我们把以前认识到的函数叫做是方法&#xff0c;那么如果单单是为了讲一下方法最基本的使用规则&#xff0…

如何从0-1学习渗透测试?

要成为一名渗透测试员&#xff0c;想从基础学习需要先掌握下面这3块&#xff1a;1、学习硬件和网络渗透测试主要涉及网络和部分涉及硬件。2、操作系统和系统架构操作系统和系统架构在渗透测试中起着关键作用。系统操作涉及x86&#xff08;32位&#xff09;和x64&#xff08;64位…

稳定性实践:开关和预案

在稳定性保障中&#xff0c;限流降级的技术方案&#xff0c;是针对服务接口层面的&#xff0c;也就是服务限流和服务降级。这里还有另外一个维度&#xff0c;就是业务维度&#xff0c;所以今天我们就从业务降级的维度来分享&#xff0c; 也就是开关和预案。 如何理解开关和预案…

AI与轨交并行,智慧服务伴乘客出行

“欢迎来到智能客服中心” “请选择您需要的服务” 大部分乘客在地铁站厅总能听见这样的提示音 而发出提示音的 正是智慧升级过后的地铁智能客服服务中心 地铁作为承载万千群众出行的工具 近年客流呈飞速增长态势 因此&#xff0c;轨道交通行业也正积极进行智慧化转型 …

C语言百日刷题第八天

前言 今天是刷题第8天&#xff0c;放弃不难&#xff0c;但坚持一定很酷~ 快来跟我一起刷题吧。刷题第八天目录前言71.打印7层杨辉三角形72.重新排列数组73.冒泡排序74.将数字变成0的操作次数75.四叶玫瑰数71.打印7层杨辉三角形 打印7层杨辉三角形 图案如下&#xff1a; 这个…

外企面试中的7 个 Android Lifecycle 重要的知识点

习惯性的每天都会打开 medium 看一下技术相关的内容&#xff0c;偶然看到一位大佬分享和 Android Lifecycle 相关的面试题&#xff0c;觉得非常的有价值。 在 Android 开发中 Android Lifecycle 是非常重要的知识点。但是不幸的是&#xff0c;我发现很多新的 Android 开发对 A…

准备pmp考试第13天

准备pmp考试第13天 32 31 感觉答案和题目没有关系 感觉答案和题目没有多大关系&#xff0c;题目看越多 错的越多&#xff0c;答案不按照问的回答&#xff0c;跑题了 30 29 28 PMP 激励&#xff1a;为某人采取行动提供了理由。 提高团队参与决策的能力并鼓励他们独立工作。这里面…