• gcc 随笔


    将几个文件编译成一个动态库 libtest.so

    gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

    将test.c与动态库libtest.so链接生成执行文件test:

    gcc test.c -L. -ltest -o test

    编译使用动态库的文件

    gcc mian.c -Wl,-rpath,~/c/so ltest -o mian.sh

    参数解析:

    -fPIC 参数:该选项用于生成位置无关的代码
    -shared 参数:将-fPIC生成的位置无关的代码作为动态库,一般情况下,-fPIC和-shared都是一起使用的。生成SO文件,共享库
    -static 参数:此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行


    -E 参数:指示编译器仅对输入文件进行预处理。当这个选项被使用时, 预处理器的输出被送到标准输出而不是储存在文件里
    -S 参数:编译选项告诉 GCC 在为 C 代码产生了汇编语言文件后停止编译。 GCC 产生的汇编语言文件的缺省扩展名
    -c 参数:选项告诉 GCC 仅把源代码编译为目标代码。缺省时 GCC 建立的目标代码文件有一个 .o 的扩展名。
    -o 参数: 未来可执行文件指定文件名

    -l 参数: 用来指定程序需要连接的库,-l紧接着就是库名
    -L 参数:跟着的是库文件所在的目录名(如果l所链接的库不在/usr/lib,/lib,/usr/local/lib,就需要L参数指定目录)

    -include 参数:用来包含头文件,但一般情况下包含头文件都在源码里用#i nclude xxxxxx实现,-include参数很少用

    -I 参数:是用来指定头文件目录,/usr/include目录一般是不用指定的,gcc知道去那里找,但 是如果头文件不在/usr/icnclude里我们就要用-I参数指定了,比如头文件放在/myinclude目录里,那编译命令行就要加上-I/myinclude


    ==================================
    -O 告诉GCC对源代码进行基本优化=
    -O 主要进行跳转和延迟退栈两种优化;
    -O0 表示不做优化
    -O1 为默认优化
    -O2 除了完成-O1的优化之外,还进行一些额外的调整工作,如指令调整等。
    -O3 则包括循环展开和其他一些与处理特性相关的优化工作。
    选项将使编译的速度比使用 -O 时慢, 但通常产生的代码执行速度会更快。

    ===================================
    GCC 支持数种调试和剖析选项,常用到的是 -g 和 -pg
    -g 选项告诉 GCC 产生能被 GNU 调试器使用的调试信息以便调试你的程序。GCC 提供了一个很多其他 C 编译器里没有的特性, 在 GCC 里你能使-g 和 -O(产生优化代码)联用。
    -pg 选项告诉 GCC 在编译好的程序里加入额外的代码。运行程序时, 产生 gprof 用的剖析信息以显示你的程序的耗时情况

    ====================================
    -Wall、-w 和 -v
    -Wall 参数:打印出gcc提供的警告信息
    -w 参数:关闭所有警告信息
    -v 参数:列出所有编译步骤

    ====================================
    相关的环境变量:
    PKG_CONFIG_PATH:用来指定pkg-config用到的pc文件的路径,默认是/usr/lib/pkgconfig,pc文件是文本文件,扩展名是.pc,里面定义开发包的安装路径,Libs参数和Cflags参数等等。
    CC:用来指定c编译器。
    CXX:用来指定cxx编译器。
    LIBS:跟上面的--libs作用差不多。
    CFLAGS:跟上面的--cflags作用差不多。
    CC,CXX,LIBS,CFLAGS手动编译时一般用不上,在做configure时有时用到,一般情况下不用管。
    环境变量设定方法:export ENV_NAME=xxxxxxxxxxxxxxxxx

  • 相关阅读:
    hdu 2147博弈找规律
    hdu 1851 巴什博弈
    hdu 1729 sg博弈
    hdu 2516博弈找规律
    (转载)博弈之SG函数
    poj 2234基础Nim博弈||sg博弈
    hdu 1730 sg博弈||nim博弈
    hdu 1847 博弈找规律
    n hdu 1760 [SG博弈]二维状态
    hdu 1849 nim博弈
  • 原文地址:https://www.cnblogs.com/zjhblogs/p/6949544.html
Copyright © 2020-2023  润新知