导航:首页 > 源码编译 > g编译选项

g编译选项

发布时间:2022-02-17 08:27:03

‘壹’ gcc 的编译选项 -MD 是什么意思

MD 是一个参数.
gcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat
-Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration
-Wcomment -Wformat -Wmain (only for C/ObjC and unless
-ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses
-Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point
-Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1
-Wswitch -Wtrigraphs -Wuninitialized (only with -O1 and above)
-Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value
-Wunused-variable
unused-function:警告声明但是没有定义的static函数;
unused- label:声明但是未使用的标签;
unused-parameter:警告未使用的函数参数;
unused-variable:声明但 是未使用的本地变量;
unused-value:计算了但是未使用的值;
format:printf和scanf这样的函数中的格式字符 串的使用不当;
implicit-int:未指定类型;
implicit-function:函数在声明前使用;
char- subscripts:使用char类作为数组下标(因为char可能是有符号数);
missingbraces:大括号不匹配;
parentheses: 圆括号不匹配;
return-type:函数有无返回值以及返回值类型不匹配;
sequence-point:违反顺序点的代码,比如 a[i] = c[i++];
switch:switch语句缺少default或者switch使用枚举变量为索引时缺少某个变量的case;
strict- aliasing=n:使用n设置对指针变量指向的对象类型产生警告的限制程度,默认n=3;只有在-fstrict-aliasing设置的情况下有 效;
unknow-pragmas:使用未知的#pragma指令;
uninitialized:使用的变量为初始化,只在-O2时有 效;

‘贰’ gcc g++ 使用哪些编译选项可以让编译出来的程序兼容32位和64位

用32位的gcc,编译出来后,能在32位上运行,也能在64位上兼容。

‘叁’ 求助:GCC编译选项加上

Debug选项:
在 gcc编译源代码时指定-g选项可以产生带有调试信息的目标代码,gcc可以为多个不同平台上帝不同调试器提供调试信息,默认gcc产生的调试信息是为 gdb使用的,可以使用-gformat 指定要生成的调试信息的格式以提供给其他平台的其他调试器使用.常用的格式有
-ggdb:生成gdb专 用的调试信息,使用最适合的格式(DWARF 2,stabs等)会有一些gdb专用的扩展,可能造成其他调试器无法运行.
-gstabs:使用 stabs格式,不包含gdb扩展,stabs常用于BSD系统的DBX调试器.
-gcoff:产生COFF格式的调试信息,常用于System V下的SDB调试器;
-gxcoff:产生XCOFF格式的调试信息,用于IBM的RS/6000下的DBX调试器;
-gdwarf- 2:产生DWARF version2 的格式的调试信息,常用于IRIXX6上的DBX调试器.GCC会使用DWARF version3的一些特性.
可 以指定调试信息的等级:在指定的调试格式后面加上等级:
如: -ggdb2 等,0代表不产生调试信息.在使用-gdwarf-2时因为最早的格式为-gdwarf2会造成混乱,所以要额外使用一个-glevel来指定调试信息的 等级,其他格式选项也可以另外指定等级.
gcc可以使用-p选项指定生成信息以供porf使用.

‘肆’ gcc 编译选项 -pthread -lpthread 异同

-pthread 比 -lpthread 多了一个宏定义 -D_REENTRANT

对于多线程程序来说这个宏非常重要,这个宏会让libc和一些其他库,自动选择线程安全的函数实现(很多函数有线程安全和不安全的2种实现版本)

所以建议使用-pthread 或者加上 -D_REENTRANT.

‘伍’ gcc编译选项 -w是什么意思

不同版本的动态库是为了升级方便,旧的程序需要与旧的库链接,新的程序与新的.

一般的做法是把libabc.so连接(symbolic link, ln -s libabc.so.N libabc.so)到最新的版本,这样以后的新程序,在用gcc -labc的时候,都会链接到新的版本.旧的已经链接好的程序并不会产生不兼容的问题,因为旧程序在过去已经链接过了(动态库链接的信息可以用ldd来查看: ldd /bin/ls).

symbolic link, ln是推荐的维护版本的办法,不建议更改文件名.

如果你要有一个方便的办法链接旧的版本, 建一个旧的版本的symbolic link就可以了,libabc11.so
ln -s libabc.so.11 libabc11.so
gcc -labc11...
以上回答你满意么?

‘陆’ linux 下,编译时启用-g选项,会不会影响运行速度。发布版本时,要不要启用-g选项

加上-g后肯定会影响运行效率的,而且包含代码的很多信息,一来为了提高效率,二是防止被别人很容易的反编译,发布时使用strip去除debug信息。

‘柒’ (arm, linux): gcc的编译选项“-MT $(*F).o -MF dep/$(@F).d”是什么意思

你这是makefile里面截出来的吧。。。。。。你问的那些不是gcc的命令,是make的自动变量。。。。。。。。。。。。。。。。。

$(*F)是目标的文件名。比如你的目标是src/foo.c,那$(*F)就是foo

$@代表make中的目标文件集合(所有目标文件),$(@F)是指这个目标文件集合里面所有的不包含路径的文件名。比如你的$@是src/foo.o,那$(@F)就是foo.o

‘捌’ gcc为什么要加-g选项不加的话也可以编译运行c程序啊

加选项-g是为了能够调试。不加可以运行,但不能调试

‘玖’ 求gcc编译与链接选项参数介绍的资料

gcc --help
不用资料,在命令行里有不懂的参数或者用法可以像上面那样,[program name] --help
再详细就翻阅GNU的手册或者官网资料。

阅读全文

与g编译选项相关的资料

热点内容
linuxutf8bom 浏览:135
3d导航软件源码 浏览:64
惠州双月湾那边用什么买菜app 浏览:936
反编译优化java软件 浏览:541
鸿蒙如何离线编译 浏览:361
日轻PDF 浏览:602
m的命令 浏览:397
mate9什么时候升级安卓10 浏览:577
java集合的原理 浏览:561
软件如何挂云服务器 浏览:542
未来警察日剧解压密码 浏览:424
用手机看pdf用什么app 浏览:97
android拍照水印 浏览:34
废纸压缩站效果怎么样 浏览:864
服务器端口怎么分享文件 浏览:894
猫饼安装文件夹 浏览:1001
qq私发能发文件夹吗 浏览:631
什么小说刚上架服务器崩了 浏览:157
服务器如何在运行里面services 浏览:618
微赞微擎源码最新版 浏览:853