gcc工具

作者: 枯海拾贝 | 来源:发表于2018-10-30 15:31 被阅读0次

1. gcc工作流程

1.1 预处理--E

  • 宏替换
  • 头文件展开
  • 注释去掉
  • xxx.c-->xxx.i(c文件)

1.2 编译--S

  • xxx.i-->xxx.s(汇编文件)

1.3 汇编--c

  • xxx.s-->xxx.o(二进制文件)

1.4 链接

  • -o指定生成的文件名,如:gcc hello.o -o hello,(默认文件名:a.out)
  • xxx.o-->xxx(可执行)
gcc工作流程图.png

2. gcc常用参数

  • -v/--version:查看gcc版本信息


  • -I:指定头文件的路径
    例如:gcc sum.c -I ./include/ -o sum(sum.c中包含的头文件在./include/目录下)

  • -c:将汇编文件生成二进制文件,得到一个.o文件

  • -o:指定生成的文件名字

  • -g:gdb调试的时候需要加

  • -D:在编译的时候指定一个宏

    • 使用场景:测试程序的时候用
  • -Wall:添加警告信息

  • -On:优化代码,n是优化级别:1,2,3



3. 静态库和动态库的制作和使用

1. 库是什么

  • 二进制文件
  • 将源代码->二进制格式的源代码
  • 加密

2. 库制作出来之后,如何给客户使用?

  • 头文件
  • 制作出的库

3. 静态库的制作和使用

  • 命名规则:libmycalc.a
    • lib
    • mycalc:库的名字
    • .a
  • 制作步骤:
    • 原材料:源代码.c .cpp
    • 将.c文件生成.o
      例如:gcc a.c b.c -c
    • 将.o文件打包
      例:ar rcs 静态库的名字 原材料( arc rcs libmycalc.a a.o b.o)
  • 库的使用:
    • -L:指定库的路径
    • -l:指定库的名字取得lib和.a

4. 动态库的制作和使用

  • 命名规则:libxxx.so
  • 制作步骤:
    • 原材料:源代码.c .cpp
    • 将.c文件生成.o
      例如:gcc a.c b.c -c -fpic
  • 将.o文件打包
    例:gcc -shared a.o b.o -o libxxx.so
  • 库的使用:

运行./app2失败:

运行动态库加载失败解决:

  • 对于elf格式的可执行程序,是有ld-linux.so来完成的
    它先后搜索elf文件的DT_RPATH段——环境变量LD_LIBRARY_PATH——/etc/ld.so.cache文件列表——/lib/,/usr/lib/目录找到库文件后将其载入内存

  • 如何让系统找到共享库

    • 拷贝自己制作的共享库到/lib或者/usr/lib

    • 临时设置:

      • export LD_LIBRARY_PATH=库路径(例:./lib)
      • 最好:export LD_LIBRARY_PATH=库路径(例:./lib):$LD_LIBRARY_PATH
  • 永久设置

    • 用户级别:~/.bashrc
      配置完成后:重启终端/source ~/.bashrc
    • 系统级别:/etc/profile
      配置完成后:source /etc/profile
  • /etc/ld.so.cache文件列表

    • 找到/etc/ld.so.conf
    • 把动态库的绝对路径添加到文件中
    • 执行一个命令:sudo ldconfig -v
  • 知识点扩展:

    • dlopen,dlclose,dlsym

相关文章

  • linux CentOS8安装redis

    安装编译工具 安装编译工具# yum install -y gcc gcc-c++检查gcc的版本# gcc --...

  • gcc工具

    1. gcc工作流程 1.1 预处理--E 宏替换 头文件展开 注释去掉 xxx.c-->xxx.i(c文件) 1...

  • 在CentOS 7下安装Nginx

    1、编译安装 1.1、安装编译工具 首先需要安装各种必须工具:  GCC GCC-C++ Autoconf...

  • CentOS上安装Redis

    1.安装前准备 gcc编译工具 安装:sudo yum install gcc wget下载工具 安装:sudo ...

  • 在CentOS 7下安装Redis

    1、编译安装 1.1、安装编译工具 首先需要安装各种必须工具:  GCC  GCC-C++ [root@myh...

  • Linux- GCC

    一.GCC GCC 编译工具链(toolchain)是指以 GCC 编译器为核心的一整套工具,用于把源代码转化成可...

  • CentOS7源码编译gcc-9.2.0

    下载gcc源码包以及依赖包: 安装gcc/gcc-c++/bzip2工具包 解压gcc源码包到/usr/local...

  • php用GraphicsMagick生成海报 力荐

    准备安装环境: 1.gcc等编译工具的准备: yum install -y gcc gcc-c++ make cm...

  • Linux安装配置redis服务器

    1、安装编译工具 yum -y install wget make gcc gcc-c++ zlib-devel ...

  • Centos6.9升级GCC到7.3.0

    Centos6.9的GCC默认是4.8,所以是需要升级GCC的 安装和编译GCC 如果没有xz工具,先安装xz 解...

网友评论

      本文标题:gcc工具

      本文链接:https://www.haomeiwen.com/subject/efawtqtx.html