编译c:包含未找到的文件

时间:2016-03-21 12:47:06

标签: c sockets libwebsockets

我收到了以下错误

  

' libwebsockets.h'找不到文件

但我已经使用命令

安装了libwebsockets
  

brew install libwebsockets

如何解决此错误? 我想实现一个websocketserver,我需要这个。 如果我的代码只有以下行

#include <libwebsockets.h>
它给了我一个错误。 我试图用gcc foo.c

编译它

1 个答案:

答案 0 :(得分:3)

您需要将适当的编译和链接标志传递给编译器,以便找到标头和库。

通常使用程序&#34; pkg-config&#34;来完成。要获取编译标志,请运行:

pkg-config libwebsockets --cflags

获取链接标志:

pkg-config libwebsockets --libs

如果在同一步骤中编译和链接,则需要将上述两个命令输出的标志传递给编译器。如果你有单独的编译和链接命令,你传递&#34; - cflags&#34;编译时输出,&#34; - libs&#34;链接期间的输出。

在您的情况下,您可以编译:

gcc $(pkg-config libwebsockets --cflags) foo.c $(pkg-config libwebsockets --libs)

$()语法接受您在()之间放置的命令的输出,并将其放入您的内容中,就好像您输入了它一样。

你应该写一个小的构建脚本来为你做这件事。例如,在名为&#34; build&#34;的文件中。与&#34; foo.c&#34;:

在同一目录中
#! /bin/sh
gcc $(pkg-config libwebsockets --cflags) foo.c $(pkg-config libwebsockets --libs)

使脚本可执行:

chmod +x build

然后只需称呼它:

./build