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

2023-11-06

目录

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

④运行可执行文件:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下C++开发笔记--g++命令 的相关文章

  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp

随机推荐

  • 【Linux】设计模式

    目录 1设计模式 1 1概念 1 2设计模式分类 1 3单例模式 1 4单例模式代码演示 1 4 1懒汉模式 1 4 2饿汉模式 2 读写锁 2 1概念 2 2加锁规则 2 3接口 2 3 1初始化接口 2 3 2销毁接口 2 3 3解锁接
  • 第1章第5节:如何使用模板创建风格统一的幻灯片 [PowerPoint精美幻灯片实战教程]

    使用模板可以创建美观 风格统一和专业的幻灯片 要使用模板创建幻灯片 首先点击此处的文件选项卡 进入文件功能页面 然后在左侧的命令列表中 点击新建命令 在页面的下方 是由微软提供的常见的演示文稿模板 也可以通过搜索框 搜索指定主题的模板 点击
  • SharedPreferences 操作

    public class SPActivity extends Activity 使用SharedPreferences 来储存与读取数据 SharedPreferences mShared null 程序中可以同时存在多个SharedPr
  • IndentationError:expected an indented block错误解决

    IndentationError expected an indented block错误解决 描述 有时一个简单的问题会困扰很久 当发现问题后才感觉自己是多蠢 下面记录一个在日常Python编程过程中碰见的典型问题 参考文章 http h
  • C++编写及注册windows服务程序

    1 注册服务 在 开始 gt 运行 gt cmd 中输入 sc create TEST binPath C TEST EXE 则在windows下注册了一项服务 sc create TestService binpath c Service
  • GitHub Action + Release:打造 Electron 持续交付系统文件配置

    main yml上的文件配置 This is a basic workflow to help you get started with Actions name build Electron App For Win Mac Control
  • 上班族适合的兼职副业,副业做什么比较靠谱,副业赚钱的路子有哪些

    要找能不影响上班的副业 那前提条件就必须不能让你投入太多的时间在上面 否则说不影响上班就是扯淡哈 对于找什么副业比较靠谱这样的问题 我们首先要清楚 哪里的用户多 我们就在那个地方寻找就准没错 这也是基本道理 无可厚非 短视频平台就是现在人流
  • C++ const 关键字详解(全网最全)

    1 const修饰符的作用 const类型定义 指明变量或对象的值是不能被更新 引入目的是为了取代预编译指令 可以保护被修饰的东西 防止意外的修改 增强程序的健壮性 编译器通常不为普通const常量分配存储空间 而是将它们保存在符号表中 这
  • 红米手机5A完整卡刷开发版获取Root超级权限的流程

    小米的手机或平板不同手机型号一般小米官网都提供两个不同的系统 可分为稳定版和开发版 稳定版没有提供Root超级权限管理 开发版中就提供了Root超级权限 在很多工作的时候我们需要使用的一些功能强大的应用 都需要在Root超级权限下工作 比如
  • 骑士周游问题,马踏棋盘算法

    该问题实际上是图的深度优先搜索的应用 package com horsechess import java awt import java util ArrayList import java util Comparator public
  • 华为OD机试真题-猜字谜【2023.Q1】

    题目描述 小干设计了一人简单的清字谈游戏 游戏的迷面是一人错误的单词 比如nwes 玩家需要猜出谈底库中正确的单词 猜中的要求如 对于某个谜面和谜底单词 满足下面任一条件都表示猜中 1 变换顺序以后一样的 比如通过变换w和e的顺序 nwes
  • Qt自带了一些常用的对话框,例如消息框、警告框、提问框等等

    Qt自带了一些常用的对话框 例如消息框 警告框 提问框等等 而QMessageBox作为其中的一种 它可以用来显示简单的信息提示 如确认对话框 错误提示等等 但是 我们发现这些提示框的样式都是固定的 无法实现自定义的样式 那么本文将介绍如何
  • 检测到目标web应用表单密码类型输入启用了自动完成操作

    描述 在web应用form表单中 如果input标签没有指定 autocomplete 属性为 off 则 autocomplete 的属性会自动默认为on 当web应用form表单中的密码类型为input标签 autocomplete属性
  • Linux系统权限详解

    目录 一 权限解释 1 所有者权限 2 所属组权限 3 其他人权限 二 用户用户组解释 3 解释权限含义 4 权限命令解释 三 基本权限 U G O 1 权限对象 2 基本权限 3 高级权限 一 权限解释 在Linux系统中 文件和目录的访
  • 【数据结构入门】时间复杂度和空间复杂度

    算法在编写成可执行程序后 运行时需要耗费时间资源和空间 内存 资源 因此衡量一个算法的好坏 一般是从时间和空间两个维度来衡量的 即时间复杂度和空间复杂度 时间复杂度主要衡量一个算法的运行快慢 而空间复杂度主要衡量一个算法运行所需要的额外空间
  • 以太坊智能合约部署与交互

    启动容器来执行geth命令 root ubu blockchain2 docker run i blockchain101 ethereum geth 1 6 5 geth attach http 45 32 252 88 8201 Wel
  • c++ 从vector 查找指定元素

    include
  • 如果安装License失败的解决方案

    有些用户的机器安装License失败 如下图 可以尝试使用以下方案
  • 剑指 Offer II 075. 数组相对排序

    问题描述 给定两个数组 arr1 和 arr2 arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序 使 arr1 中项的相对顺序和 arr2 中的相对顺序相同 未在 arr2 中出现过的
  • Linux下C++开发笔记--g++命令

    目录 1 前言 2 开发环境搭建 3 g 重要编译参数 4 实例 1 前言 最近学习在linux环境下进行C 开发的基础知识 参考的教程是基于VSCode和CMake实现C C 开发 Linux篇 非常适合小白入门学习 2 开发环境搭建 安