Linux操作系统(CentOS 7)编译libuv库(记录自己所踩的坑)
Linux操作系统(CentOS 7)编译libuv库(记录自己所踩的坑)
libuv是一个跨平台的异步I/O库,它主要用于构建高性能的网络应用程序。它被广泛应用于Node.js中,也可以用于其他编程语言的开发中。
首先,安装一些基本工具
autoconf
sudo yum install autoconf
automake
sudo yum install automake
libtool
sudo yum -y install libtool
下载libuv源码
先进入github官网
https://github.com/libuv/libuv
下载完毕以后,通过cd进入下载目录
unzip libuv-1.x.zip
再进入解压后的目录
编译libuv库
首先查看自己的gcc版本
gcc --version
如果gcc版本低于4.9,那么进行下面的操作,因为gcc如果版本过低会导致如下错误:
fatal error: stdatomic.h: No such file or directory
#include <stdatomic.h>
^
接下来,我们升级gcc版本
wget https://copr.fedoraproject.org/coprs/hhorak/devtoolset-4-rebuild-bootstrap/repo/epel-7/hhorak-devtoolset-4-rebuild-bootstrap-epel-7.repo -O /etc/yum.repos.d/devtools-4.repo
yum install devtoolset-4-gcc devtoolset-4-binutils devtoolset-4-gcc-c++
scl enable devtoolset-4 bash
ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/
hash -r
最后,我们查看一下gcc版本。
gcc -v
这里版本号为5.2.1,已经满足了要求。接着,我们开始编译libuv库。
./autogen.sh
./configure --prefix=/usr
make
make install
然后在/usr/lib/目录(库文件)下有libuv.so和libuv.a的库文件。头文件(例如uv.h)被安装在/usr/include/。
我们也可以进去看一下
cd /usr/lib
cd /usr/include
除此以外,我们还可以使用一下指令查看安装是否成功
echo $?
输出结果为0,那就说明我们的安装成功。至此,libuv就已经编译好了。
测试
可以使用官方的一个小demo
1.创建文件。
cd /root
vim hello.c
2.编码
#include <stdio.h>
#include <stdlib.h>
#include <uv.h>
int main() {
uv_loop_t *loop = malloc(sizeof(uv_loop_t));
uv_loop_init(loop);
printf("Hello Word!\n");
uv_run(loop, UV_RUN_DEFAULT);
uv_loop_close(loop);
free(loop);
return 0;
}
3.编译
gcc hello.c -L/usr/lib/ -luv -o hello
-l:指定库名;-L:指定库路径;此处的/usr/lib/为libuv的库目录,大家需要按照自己的调整。
4.执行
./hello
至此,就可以看见屏幕上打印Hello Word!
多余的话
如果各位看官觉得有帮助,不妨留下个免费的赞再走。