偷学 make & gcc

make

流程

大概流程是(偷抄这里的,特别清楚)——

  • On the maintainer’s system:

    aclocal # Set up an m4 environment
    autoconf # Generate configure from configure.ac
    automake --add-missing # Generate Makefile.in from Makefile.am
    ./configure # Generate Makefile from Makefile.in
    make distcheck # Use Makefile to build and test a tarball to distribute
    
  • On the end-user’s system:

    ./configure # Generate Makefile from Makefile.in
    make # Use Makefile to build the program
    make install # Use Makefile to install the program
    

构建结果

在 configure 可以指定安装目录

系统级安装
./configure --prefix=/usr/local
用户级安装
./configure --prefix=/home/user/custom-path

gcc

c 语言头文件

  • 是什么

    头文件只包含了函数声明、宏定义、结构体定义等内容,而实际的函数实现和变量定义通常是在源代码文件(.c文件)中进行的。因此,在编译时需要将头文件和源代码文件一起提供给编译器。

    #include<utility.h>

    gcc main.c utility.c -o main

  • 在哪里

    编译器会在系统的默认头文件搜索路径中查找所需的头文件。如果头文件不在默认路径中,可以通过使用 -I 选项来指定额外的包含路径。

    • 默认路径 /usr/include

      会在默认情况下指定到/usr/include文件夹

      (其实是一个相对路径,gcc可执行程序的路径是/usr/bin/gcc,他会用相对路径查找 include

    • -I 指定

      gcc -c -I/home/me/development/skia sample.c

动态链接库

  • 是什么

    在运行时动态加载和链接到可执行文件中,实现代码的共享和动态链接。

  • 哪里找

    /usr/lib

    使用 -l 选项时,库文件名称是去除了前缀 lib 的部分,例如 libm.a 库对应的参数为 -lmlibcrypto.so 库对应的参数为 -lcrypto

相关目录

  • bin

    放编译好的二进制文件

  • lib

    pkgconfig 也会放在这里(里面放一些 .pc 文件,configure 的时候可能需要)

    放置动态链接库

  • include

    用于放置头文件

posted @ 2023-07-15 21:15  giacomo捏  阅读(24)  评论(0编辑  收藏  举报