【Linux/gcc系列】Gcc编译链接选项的用法总结

Date: 2019-3-13


前言

    Gcc编译器套件中包含了Linux程序编译和链接的整个工具链,其中编译和链接选项控制了编译器和连接器的行为(比如打印输出、警告等)。下面总结了项目中遇到的Gcc编译链接选项的用法。

1、Gcc编译链接选项的用法总结

(1)、gcc选项参数-D,-M以及makefile相关命令
(2)、makefile的override指示符与gcc -ldl选项作用
(3)、GCC的符号可见性——解决多个库同名符号冲突问题
(4)、链接选项-L,-l,-rpath,-rpath-link用法分析
(5)、-Werror, -Wimplict-function-declaration, -w, -Wall
(6)、-D_REENTRANT编译选项的作用
(7)、linux gcc编译参数: -fPIC
(8)、创建动态库时,建议使用的链接选项-Bsymbolic
(9)、GCC选项_-Wl,-soname
(10)、gcc编译选项:-fomit-frame-pointer,-fno-tree-vectorize,-fno-strict-aliasing以及ARM相关选项
(11)、gcc编译参数之-fno-strict-aliasing
(12)、gcc链接参数–whole-archive的作用
(13)、gcc选项含义:CFLAGS、CXXFLAGS、LDFLAGS与LIBS

2、未完待续…
2.1、编译选项-Waggressive-loop-optimizations分析

参考网址:
https://stackoverflow.com/questions/41412118/compiling-postgresql-disable-fno-aggressive-loop-optimizations
https://blog.csdn.net/ljianhui/article/details/9212817

Gcc官方文档解释如下:
【Linux/gcc系列】Gcc编译链接选项的用法总结_第1张图片
在这里插入图片描述

2.2、编译选项-shared & -share & -static

-static
  此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也无需什么
动态连接库,就能够运行。

-share
  此选项将尽量使用动态库,所以生成文件比较小,但是需要系统有动态库。

-shared
  此选项用于生成共享目标文件时.优先使用动态库,一般用于生成动态库。

Gcc官方文档解释如下:
【Linux/gcc系列】Gcc编译链接选项的用法总结_第2张图片
【Linux/gcc系列】Gcc编译链接选项的用法总结_第3张图片

3、参考

gcc online docs
GCC生成动态链接库(.so文件):-shared和-fPIC选项
gcc编译选项
编译与链接的问题 gcc -fPIC -shared


THE END!

在这里插入图片描述

你可能感兴趣的:(【Linux/Gcc】)