如何在Linux上构建猫鼬网络服务器?

问题描述:

我很抱歉,如果这看起来像一个愚蠢的问题,但我想我更习惯与Makefiles或配置脚本随附的软件包。如何在Linux上构建猫鼬网络服务器?

我从site下载了Mongoose源码tar文件,并解开它。

然后我试着用 gcc -g -c mongoose.c -o main.o -lpthread -ldl编译一个可执行文件。 但是,试图执行后,我得到错误-bash: ./main.o: cannot execute binary file

当我看着mongoose.c源,我没有找到一个主要功能。

我在哪里可以获得主要功能,以便Linux猫鼬网络服务器可以编译为与Windows mongoose.exe一样工作?

Mongoose确实附带了一个Makefile,并且将作为一个独立的命令行程序进行编译。包括Lua和SQLite。

编译最新版本的最简单方法是cd到“build”目录并运行make unix。我不确定下载页面上的存档版本,但中继线一直非常稳定。

我刚刚从github早些时候签出了一份干净的Mongoose副本,并且没有任何问题,所以我可以确认这是有效的(假设您有任何其他依赖项设置正确,当然)。

+1

Mongoose不再具有./build目录,开发人员也没什么帮助,可能是因为Mongoose现在部分是商业产品。 – Gulbahar

+1

@Gulbahar你可能已经知道这一点,但[Civetweb] fork(https://github.com/bel2125/civetweb)fork保留了MIT许可证,正在积极开发,并且有详细的[build instructions](https:// github。 COM/bel2125/civetweb /斑点/主/文档/ Building.md)。 –

这是因为猫鼬不应该被单独使用,而是将其“嵌入”到您的程序中。您需要创建一个从mongoose.c调用正确功能的程序。

此外,GCC的-c标志告诉它创建一个目标文件,它需要链接来创建一个可执行文件。所以你试图执行一个不可执行的文件。

+1

为什么Windows版本的猫鼬会使用独立程序,而* nix版本不会? 我期望* nix版本包含一个独立的版本。 – merlin2011

+1

@ merlin2011源代码归档没有主要功能,因此它不能与提供的windows可执行文件(其中包含很多其他内容,如SSL,lua等 - 它们都不是核心猫鼬源代码的一部分)中使用的完全相同。唯一能够回答你的问题的是他们的windows包的开发者/维护者,请问他们是否愿意 - 尽管如果你是第一个想要这个功能的人,我不会感到惊讶,但它绝对不是猫鼬意图的用例。 – keltar