热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++linux编译,G++编译C++方法以及Linux编程环境

很是简单,今天用到,暂做标记,以供初学查阅:编译生成可执行文件g-ohellohello.cpp运行.helloGCC编译命

很是简单,今天用到,暂做标记,以供初学查阅:

//编译生成可执行文件

g++ -o hello hello.cpp

//运行

./hello

GCC编译命令

gcc -v 查看版本

查找g++的命令帮助 键入 info g++,会显示出gcc的帮助信息,g++大部分参数和gcc命令相同

选项 解释

-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,

例如 asm 或 typeof 关键词。

-c -o只编译并生成目标文件。

-DMACRO 以字符串“1”定义 MACRO 宏。

-DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。

-E 只运行 C 预编译器。

-g 生成调试信息。GNU 调试器可利用该信息。

-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。

-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。

-lLIBRARY 连接时搜索指定的函数库LIBRARY。

-m486 针对 486 进行代码优化。

-o FILE 生成指定的输出文件。用在生成可执行文件时。

-O0 不进行优化处理。

-O 或 -O1 优化生成代码。

-O2 进一步优化。

-O3 比 -O2 更进一步优化,包括 inline 函数。

-shared 生成共享目标文件。通常用在建立共享库时。

-static 禁止使用共享连接。

-UMACRO 取消对 MACRO 宏的定义。

-w 不生成任何警告信息。

-Wall 生成所有警告信息。

g++ -o 目标文件名 源文件名

ldd programm 查看programm程序所依赖的共享库(.so)文件

ar crv mm.a x.o y.o 将x.o和y.o合并到一个静态库mm.a文件中

ranlib mm.a 生成静态库的内容表 (不是必须)

emacs基本命令

ctrl+x+f 打开文件

ctrl+x+d 打开目录,查看该目录的子目录

ctrl+x+s 保存当前buffer里的文件

ctrl+s 查找当前buffer里的文本

rename-buffer 修改当前缓冲区的名字

ctrl+shift+ - 回退

ctrl+alt+\ 对选中的代码进行格式化

ctrl+x 松开后 按o 在不同的缓冲区移动焦点

alt+x选中命令缓冲区

ctrl+g取消当前命令

alt+w 复制被选中的代码

ctrl+y 粘帖代码

ctrl+w 剪切代码

ctrl+x 松掉后按backspace 设置断点

ctrl+x+k 关闭当前缓冲区

GDB调试命令

查看gdb帮助信息 gdb –help

注意g++编译时,使用-g命令

gdb 已编译的程序文件名

list 显示源代码

break命令设置断点,可以后面加上函数名称

delete breakpoints 删除所有断点

run 运行程序

step 单步跟踪(自动进入函数)

next 单步跟踪(不自动进入函数)

continue 继续运行

print 变量名查看某变量的值,调试过程中改变某变量的值

info breakpoints 查看程序中断点设置的信息

quit 退出

info thread 列出多个线程号。 thread 查看当前线程号 thread 线程号 选择进入哪个线程进行调试。

Unicode和MultiBytes 字符串的转换

#include

size_t wcsrtombs (char *dest, const wchar_t **src, size_t len, mbstate_t *ps);

#include

size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);

环境变量

查看环境变量

env

env也可以用来设置环境变量的值,具体看env --help

set 也可是设置环境变量

如果环境变量在一个terminal里设置,就只对这个terminal有效

如果想全局的设置,需要修改

/etc/profile文件0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • 本文详细解析了muduo库中的Socket封装及字节序转换功能。主要涉及`Endian.h`和`SocketsOps.h`两个头文件,以及`Socket.h`和`InetAddress.h`类的实现。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 本文探讨了STL迭代器的最佳实践,包括iterator与const_iterator、reverse_iterator及其const版本之间的关系,以及如何高效地转换和使用这些迭代器类型。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • C++构造函数与初始化列表详解
    本文深入探讨了C++中构造函数的初始化列表,包括赋值与初始化的区别、初始化列表的使用规则、静态成员初始化等内容。通过实例和调试证明,详细解释了初始化列表在对象创建时的重要性。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • C语言实现推箱子游戏的完整代码
    本文详细介绍了如何使用C语言在Linux环境下实现一个简单的推箱子游戏,包括游戏的基本规则、地图设计及代码实现。适合C语言初学者学习。 ... [详细]
  • 在较新的GCC版本中,当尝试将字符串常量传递给期望非const char*参数的函数时,可能会遇到编译警告。本文探讨了这一问题的原因及解决策略。 ... [详细]
  • 探讨在C语言编程中,当头文件中声明了一个const变量,但在实现文件中却将其定义为非const变量时,编译器如何处理这一冲突。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍如何使用JPA Criteria API创建带有多个可选参数的动态查询方法。当某些参数为空时,这些参数不会影响最终查询结果。 ... [详细]
  • 本文介绍了在MacOS上通过Homebrew安装Anaconda3,并配置环境变量以实现不同Python版本之间的快速切换。同时,提供了详细的步骤来创建和管理多个Python环境。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 在DELL Inspiron 14R上部署CentOS X64 6.4的详细步骤
    本文详细记录了在DELL Inspiron 14R笔记本电脑上安装CentOS X64 6.4操作系统的过程,包括遇到的问题及解决方法。 ... [详细]
author-avatar
非策不劃小子白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有