首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用libuv编译最小程序?

如何使用libuv编译最小程序?
EN

Stack Overflow用户
提问于 2013-10-11 18:13:06
回答 2查看 2.9K关注 0票数 4

自从我用C语言编写程序以来已经有很长一段时间了,尽管如此,我仍然发现实际的编译和链接相当混乱。

因为我最近一直在玩/使用node.js,所以我变得足够好奇,开始偷看一下引擎盖下的情况,目前正在关注libuv。

我找到了一些优秀的指南,但发现实际的编译部分在很大程度上被跳过了。很可能是因为一个公平的假设,即任何有趣的人都可能与gcc合作过很多次。

我已经从gtihub下载了最新的libuv压缩包,并将其解压到一个工作文件夹中。我按照README.md编译并安装了它。所有这些都进行得很好,没有任何问题。

我要编译的代码来自http://nikhilm.github.io/uvbook/basics.html

代码语言:javascript
复制
#include <stdio.h>
#include <uv.h>

int main() {
    uv_loop_t *loop = uv_loop_new();

    printf("Now quitting.\n");
    uv_run(loop, UV_RUN_DEFAULT);

    return 0;
}

我已经将它保存为main.c

这就是我正在使用的Makefile,我怀疑这就是问题所在,因为它是从各种来源拼凑而成的,至少可以说,我在这方面的知识是模糊的。

代码语言:javascript
复制
main: main.c
    gcc -g  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I./libuv-master/include/ -o main main.c -pthread -lrt -lm
clean:
    rm main

这是运行make的结果。

代码语言:javascript
复制
/tmp/ccJbU03z.o: In function `main':
/home/tom/libuv-test/main.c:5: undefined reference to `uv_loop_new'
/home/tom/libuv-test/main.c:8: undefined reference to `uv_run'
collect2: error: ld returned 1 exit status

我意识到这并不是libuv所特有的,但这正是我所处的位置,因此任何帮助都将不胜感激。

我使用的是Ubuntu 13.04

EN

回答 2

Stack Overflow用户

发布于 2013-10-11 19:12:29

我能做的最简单的Makefile是这样的,但显然它特定于libuv.a在我的系统上的位置。我欢迎这个答案的编辑/新帖子,它提供了一个更通用的编译行。

代码语言:javascript
复制
main: main.c
    gcc -o main main.c /usr/local/lib/libuv.a -pthread
clean:
    rm main
票数 9
EN

Stack Overflow用户

发布于 2021-07-08 06:40:04

为了对前面的答案稍加改进,可以使用pkg-config来避免对路径进行硬编码:

代码语言:javascript
复制
LDFLAGS = `pkg-config --libs libuv`

main: src/main.c
    $(CC) -o main src/main.c $(LDFLAGS)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19315602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档