gcc学习

0.链接

菜鸟教程

官网链接

Ubuntu安装arm-linux-gcc 详细步骤

1.gcc参数的简单介绍

-S 生成会标代码

Redis-6.0.8中遇到的一些编译参数:
-fpic      如果支持这种目标机, 编译器就生成位置无关目标码.适用于共享库 (shared library).
-fPIC      如果支持这种目标机, 编译器就输出位置无关目标码.适用于动态连接 (dynamic linking), 
           即使分支需要大范围转移.
-pedantic  以ANSI/ISO C标准列出的所有警告,当GCC在编译不符合ANSI/ISOC语言标准的源代码时,如果在编
           译指令中加上了-pedantic选项,那么源程序中使用了扩展语法的地方将产生相应的警告信息。

--Werror   视警告为错误;出现任何警告即放弃编译.
-Wall      会打开一些很有用的警告选项,建议编译时加此选项。
-Wextra    打印一些额外的警告信息。
-w         禁止显示所有警告信息。

1.内存非法访问检查

【Linux开发】GCC 4.8及以上支持内存非法访问检查

2.参数-E

-E     预处理 后 即停止, 不进行 编译. 预处理后的 代码 送往 标准输出.
GCC 忽略 任何 不需要 预处理 的 输入文件.

3.参数 -I(大写的i),-L(大写的l),-l(小写的L)

-L  后面紧跟着用户设定的编译器【库文件】查找路径,如:-L /usr/local/lib
-I  后面紧跟着用户设定的编译器【头文件】查找路径,如: -I${MYSQL_HOME}/include/mysql
-l  用来指明编译器要链接哪些【库】,如: -lpcre  -lssh

整体举例:
CC=g++
CFLAGS=-g
BIN=main
OBJS=main.o
LIBS=-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -ljsoncpp -lpthread -std=c++11

$(BIN):$(OBJS)
    $(CC) $(CFLAGS) $^ -o $@
%.o:%.cpp
    $(CC) $(CFLAGS) -c $< -o $@ $(LIBS)

.PHONY:clean
clean:
    rm -f *.o $(BIN)

4. -fpermissive

gcc文档说明:
Downgrade some diagnostics about nonconformant code from errors to warn-
ings. Thus, using ‘-fpermissive’ allows some nonconforming code to compile.
一旦使用这个选项,可以兼容一些老的语法,但是一些语法错误也会被忽略,可能会导致更严重的问题.


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值