Libuv入门: 编译libuv

本文使用Zhihu On VSCode 创作并发布

Libuv 源码地址 github

编译

下载源码,进入跟目录,编译:

$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make install

make
生成 .libs
目录,里面是编译好的静态库,核心是 libuv.a
文件。

.
├── libuv.1.dylib
├── libuv.a
├── libuv.dylib -> libuv.1.dylib
├── libuv.la -> ../libuv.la
└── libuv.lai

make install
会把:

  • uh.h
    头文件复制到 /usr/local/include/
  • libuv.a 复制到 /usr/local/lib

所以 install
后,加 -luv
参数,指定 uv
库,就可以直接编译程序

gcc hello.c -luv

如果为了更好的可移植性,把源码集成到项目编译,然后直接使用编译生成的 静态库

gcc hello.c -Iinclude ./.libs/libuv.a
  • -Iinclude
    : 指定头文件去 include
    目录查找
  • ./.libs/libuv.a
    : 静态库路径

include
目录

.
├── uv
│   ├── aix.h
│   ├── android-ifaddrs.h
│   ├── bsd.h
│   ├── darwin.h
│   ├── errno.h
│   ├── linux.h
│   ├── os390.h
│   ├── posix.h
│   ├── stdint-msvc2008.h
│   ├── sunos.h
│   ├── threadpool.h
│   ├── tree.h
│   ├── unix.h
│   ├── version.h
│   └── win.h
└── uv.h

-luv
-l后面为什么是uv?

libuv的文件名是libuv.a。前缀lib和后缀.a是标准的,uv是基本名称,GCC 会在-l选项后紧跟着的基本名称的基础上自动添加这些前缀、后缀,本例中,基本名称为uv。