偷学 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
库对应的参数为-lm
,libcrypto.so
库对应的参数为-lcrypto
相关目录
-
bin
放编译好的二进制文件
-
lib
pkgconfig 也会放在这里(里面放一些 .pc 文件,configure 的时候可能需要)
放置动态链接库
-
include
用于放置头文件