热门标签 | 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



推荐阅读
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.jena.atlas.lib.ByteBufferLib 类下的 acopyArray 方法,并提供了多个实际应用中的代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
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社区 版权所有