我的G++编译选项】的更多相关文章

-g,生成供调试用的可执行文件,可以在gdb中运行.由于文件中包含了调试信息因此运行效率很低,且文件也大不少. -c:生成名为source_file.o的目标文件. -o, 指定输出文件名,可以配合以上三种标签使用. -S:生成名为source_file.s的汇编代码 -O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件.-O 后面还可以跟上数字指定优化级别,如:gcc -O2 source_file.c数字越大,越加优化. -W 打印一些额外的警告信息. -w禁止显示所…
g++ -Wall -m64 -W -O2 a.cpp b.cpp -o a 用下面的命令编译,生成libtriangle.so  先生成动态库 g++ -g -fpic -shared -o libtriangle.so triangle.cpp polygon.cpp g++  -Wall -m64 -W -O2 -fpic -shared -o Gy8583ISO.so Gy8583ISO.cpp   //-g http://hi.baidu.com/ablenavy/item/b4989…
-Wall -Wextra -g3 -DLOCAL -Wshadow -Wpointer-arith -Wcast-qual -Waggregate-return -Winline -Wunreachable-code -Wall打开大部分(但不是所有)的编译警告 -Wextra打开额外的警告(不知道有没有-Wall没有包含的,为了保险这里加上) -g3调试信息 -DLOCAL定义一个LOCAL宏,用于条件编译 -Wshadow当局部变量覆盖全局变量时,会警告.-Wall 并不会打开此项. -W…
gcc与g++区别:可以相互编译,但是gcc不会自动进行c++的链接 gcc g++编译选项: -E 预处理 -S 编译指定源文件但是不尽兴汇编 -c 编译汇编,但是不进行链接 -o 编译成可执行文件 -I 指定include包含文件的搜索目录 -g 生成调试信息 -D 编译时指定一个宏,加上宏才会运行的部分代码 -D演示 点击查看代码 在c程旭忠 #ifdef DEBUG {xxxx} #endif 编译时使用 -D DEBUG 才能进行xxxx这句话 -w 忽略警告 -Wall 显示所有警告…
g++编译&&gdb调试&&coredump调试 一.编译注意细节 1.使用g++编译CPP文件如果用gcc编译C++源文件时,加以下选项:-lstdc++,否则使用了C++操作的文件编译会出错. 2.gcc/g++ 在执行编译时,需要4步 ①   预处理,生成.i的文件[使用-E参数] ②   将预处理后的文件把转换成汇编语言,生成文件.s[使用-S参数] ③   由汇编变为目标代码(机器代码)生成.o的文件[使用-c参数] ④   连接目标代码,生成可执行程序[使用-o…
Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     在 linux 下,库文件一般放在 /usr/lib 和 /lib 下, 静态库的名字一般为 libxxxx.a ,其中 xxxx 是该 lib 的名称 动态库的名字一般为 libxxxx.so.major.minor , xxxx 是该 lib 的名称, major 是主版本号, minor 是…
1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe 1.2体验在VC下程序的编译 a.先编译,在链接 b.修改了哪个文件,就单独编译此文件,在链接 c.修改了哪个头文件,就单独编译使用该头文件的源文件,在链接 1.3在linux下实现上述要求 2.编写一个测试的Makefile 2.1直接编译链接 gcc -o test a.c b.c 缺点:改变其中一个文…
开发环境: 操作系统: (uname -a output)  Linux ubuntu 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux JDK 版本 : (java -version) java version "1.7.0_51"OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubun…
问题: 代码在Debug模式下编译报出内存溢出的错误,而Release模式下则没有. 由于Debug模式下包含调试信息,并且不作任何优化.而Release模式进行了各种优化,内存检测等操作均省去,使得程序在代码大小和运行速度上都是最优的. 方法1: 猜测Release对代码进行了优化或者根本就没有进行内存检测,才导致Release模式下编译通过的.于是我进行了代码缩减,删除没有用的变量,问题仍然没有解决. 方法2: 我发现在Debug模式下,main.c文件淡黄色, ,Release模式下仍然为…
Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux.RTLinux.ARM-Linux等等. 在嵌入式操作系统方面,Linux的地位是不容怀疑的,它开源.它包含TCP/IP协议栈.它易集成GUI. 鉴于Linux操作系统在服务器和嵌入式系统领…
catalogue . 漏洞简述 . 调试环境搭建 . 漏洞利用 . 漏洞分析 . 缓解修复方案 1. 漏洞简述 0x1: 函数调用顺序 getaddrinfo (getaddrinfo.c) -> _nss_dns_gethostbyname4_r (dns-host.c) -> __libc_res_nsearch (res_query.c) -> __libc_res_nquery (res_query.c) -> __libc_res_nsend (res_send.c)…
(This article is under constant construction) DISCLAIMER: 本文的主要内容来自https://gcc.gnu.org/onlinedocs/gcc/ 这篇随笔主要记录有关build C/C++程序的知识. 包括 gcc/g++ 的各个参数的含义 编译, 链接等概念 Linux中make的使用 静态/动态链接库 Linux的文件系统 从源文件到可执行文件 Compilation can involve up to four stages: p…
oProfile工具可以分析CPU的负载量 只要对目标程序加上 -g 后重新编译,即可用oProfile进行分析 例如在测试apache的性能时, 增加 -g 编译选项[crifan@localhost lrzsz-0.12.20]$ CFLAGS=-g ./configure 问题:opcontrol --start失败解决办法[root@mysqlmaster03 boot]# opcontrol –deinit[root@mysqlmaster03 boot]# echo 0 > /pro…
最近做了一系列的单元测试相关的工作,除了各种规范及测试框架以外,讨论比较多的就是关于代码覆盖率的产生,c/c++与其他的一些高级语言或者脚本语言相比较而言,例如 Java..Net和php/python/perl/shell等,由于没有这些高级语言和脚本语言的反射的特性,其代码覆盖率的产生过程会稍微复杂一些.发现许多同学对C++的覆盖率如何产生在都不太清楚,这里做一个简单的介绍. 一.基本使用方法 在Linux上的c/c++开发一般都使用gcc/g++作为主要的编译器,如果需要产生覆盖率数据需要…
2.3  C++兵器谱 正所谓“工欲善其事,必先利其器”,而要想做好C++程序设计,自然也离不开几件像样的兵器.下面我们就来看看C++兵器谱上有哪些神兵利器值得我们学习掌握.排在兵器谱上首要位置的就是C++集成开发环境.所谓的集成开发环境(Integrated Development Environment,IDE),就是一套用于开发C++程序的软件集合,一般包括代码编辑器.编译器.调试器和图形用户界面工具等,是集代码编写功能.分析功能.编译功能.调试功能于一体的开发软件套装.一些复杂的新型ID…
这边之前的大多数项目都用的java,而自己用的c++,等到快要上线的时候才发现线上机器的gcc和libc的版本都巨低,跟自己测试开发用的环境不兼容,编译出的c++可执行文件没法运行.解决c++程序的移植问题费了挺大周章,如下是一个具体记录: 1.问题描述 如上所述,线上机器与开发机环境不兼容,需要做c++程序的移植. 2.表现 细节不表,总之就是程序没法运行,找不到对应的库.如下给出几个跟gcc有关的错误提示: /usr/lib64/libstdc++.so.6: version `GLIBCX…
一篇比较不错的文章, 降到了 makefile make , gcc编译器,GDB调试器, Linux文件系统,Linux文件API,.C语言库函数(C库函数的文件操作实际上是独立于具体的操作系统平台的),进程控制与进程通信编程 1.Linux进程 Linux进程在内存中包含三部分数据:代码段.堆栈段和数据段.代码段存放了程序的代码.代码段可以为机器中运行同一程序的数个 进程共享.堆栈段存放的是子程序(函数)的返回地址.子程序的参数及程序的局部变量.而数据段则存放程序的全局变量.常数以及动态数…
GCC(警告.优化以及调试选项) [介绍] gcc and g++分别是gnu的c & c++编译器   gcc/g++在执行编译工作的时候,总共需要4步   1.预处理,生成.i的文件 预处理器cpp2.将预处理后的文件不转换成汇编语言,生成文件.s 编译器egcs3.有汇编变为目标代码(机器代码)生成.o的文件 汇编器as4.连接目标代码,生成可执行程序 连接器ld 1.总体选项 -E   只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里   面.   例子用法:   gcc…
[测试程序] 我们先看看我们的测试程序: /* in eg1.c */ int wib(int no1, int no2) {         int result, diff;         diff = no1 - no2;         result = no1 / diff;         return result; } int main() {         pid_t   pid;         pid = fork();         if (pid <0) {   …
Linux基础 常用shell命令 命令 说明 命令 说明 man 查看联机帮助 ls 查看目录及文件列表 cp 复制目录或文件 mv 移动目录或文件 cd 改变文件或目录 rm 删除文件或目录 mkdir 创建新目录 rmdir 删除空目录 cat 查看文本内容 find 查找目录或文件 date 显示或修改日期和时间 free 显示内存交换空间信息 chmod 改变目录或文件权限 chown 改变目录或文件的所有者 控制台操作 按Ctrl+Alt+F2键进入控制台Ctrl+Alt+F7退出控…
同样,使用的是VS FOR LINUX进行测试. converting to execution character set: Invalid or incomplete multibyte or wide character 如果编译时候遇到该错误,则可以加上-finput-charset  -fexecute-charset  g++编译选项解决.因为linux下gcc希望源文件是UTF-8格式,所以都改成UTF-8就好了.同时,也可以vs下装个forceUTF8插件. 搜了下,网上有说使用…
前言 本文作为<嵌入式系统C编程之堆栈回溯>的补充版.文中涉及的代码运行环境如下: 一  异常信号 信号就是软件中断,用于向正在运行的程序(进程)发送有关异步事件发生的信息.Linux应用程序发生异常时,操作系统会产生相应的信号.硬件检测到异常(非法指令.对无效的内存引用等)时也会通知内核,内核将其转换为适当的信号并发给该异常发生时正在运行的进程. 此外,进程可将信号发送给另一进程或进程组(调用kill函数),或向自身发送信号(调用raise函数). 系统中可产生并发送多种类型的信号.在Lin…
这几天在系统能力班自学linux,加上最近大数据课上开始使用linux,我在这里总结一下,linux下使用vim编辑c程序的一些问题. 大数据课上是直接使用micro来编辑的,我这里只是简单的说明一下vim的一些基本使用方法,毕竟我也是刚开始接触. 主要内容来自系统能力班老师们准备的资料,图片是我自己实验的截图.by from  deepin 13. 1 vi/vim使用 1.1 vi/vim简介 vi/vim是Linux.Unix字符界面下常用的编辑工具,也是系统管理员常用的一种编辑工具.很多…
函数参数传递 struct huge_data{ char *content; unsigned sz; huge_data():content(),sz(){ cout<<this<<"->huge_data()"<<endl; } huge_data(unsigned sz):content(new char[sz]),sz(sz){ cout<<this<<"->huge_data("&l…
在内核开发的过程中,经常会碰到内核崩溃,比如空指针异常,内存访问越界.通常我们只能靠崩溃之后打印出的异常调用栈信息来定位crash的位置和原因.总结下分析的方法和步骤. 通常oops发生之后,会在串口控制台或者dmesg日志输出看到如下的log,以某arm下linux内核的崩溃为例, <2>[515753.310000] kernel BUG at net/core/skbuff.c:1846! <1>[515753.310000] Unable to handle kernel…
最近在开始刷LeetCode,也开始在Linux上写代码,直接gcc编译,在调试的时候,需要用到gdb调试,所以在这里会不定期更新我学习到的gdb调试. 先编译成可执行文件 首先我们使用g++或者gcc编译成可执行文件,记得要加-g编译选项,表示生成调试信息,以便我们使用gdb调试. 开始调试 假设我们有一个 main.cpp文件,编译链接后生成了main这个可执行文件,进行调试: gdb main 设置断点 开始调试后,我们可以设置断点: break 23 这个表示对源文件的23行设置一个断点…
如果是终端窗口执行的话直接: 在g++编译选项后面,加入dl的库,选项为-ldl,即可. 如果是在eclipse里的话: 在工程属性中->c/c++ build->gcc complier右边的command中加上一个参数 -ldl 然后在gcc linker 右边的command同样加上一个参数-ldl 然后保存就好了 如下:…
什么是库文件? 库文件是事先编译好的方法的合集.比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,不需要重新编写. Linux系统中: 1.静态库的扩展名为.a:2.动态库的扩展名为.so: 源代码到可执行程序的转换时需要经历如下图所示的过程: 1.编译是指把用高级语言编写的程序转换成相应处理器的汇编语言程序的过程.2.汇编是从汇编语言程序生成目标系统的二进制代码(机器代码)的过程.3.链接是指将汇编生成的多段机器代码组合成一个可执行程序. 通过编译和汇编过程,…
A+B for Input-Output Practice (VIII) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description Your task is to calculate the sum of some integers. Input Input contains an integer N in the first line, and the…
这一节主要介绍segues,static table view cells 和 Add Player screen 以及 a game picker screen. Introducing Segues 开启 Main.storyboard拖拉一个Bar Button Item到Players窗口导航栏的右侧.在Attributes inspector中改变Identifier为Add,就会出现一个+号button.…