将silicon webserver与libmicrohttpd后端链接

时间:2016-03-24 14:32:24

标签: c++ clang c++14 freebsd

我尝试使用clang ++ 38在FreeBSD 10.2 RELEASE上编译硅webserver hello world example。该框架使用c ++ 14。我已经安装了libmicrohttpd。

当我尝试使用

编译程序时
clang++38 -O2 -Wall -std=c++14 -I/usr/local/include -L/usr/local/lib -lmicrohttpd -o sws01 sws01.cpp

我收到错误

In file included from sws01.cpp:2:
/usr/local/include/silicon/backends/mhd.hh:158:22: error: use of undeclared identifier 'MHD_http_unescape'
    value.resize(MHD_http_unescape(&value[0]));

sws01.cpp:

#include <silicon/api.hh>
#include <silicon/backends/mhd.hh>
#include "symbols.hpp"

using namespace sl;
using namespace s;

auto hello_api = http_api(
        GET / _hello = [](){ return D(_message = "Hello from Silicon Webserver!"); }
);

int main() {
    sl::mhd_json_serve(hello_api, 9876);
}

我尝试应用此SO thread答案,但-Wl并指定/usr/local/lib/libmicrohttpd.a

clang++38 -O2 -Wall -std=c++14 -I/usr/local/include /usr/local/lib/libmicrohttpd.a -o sws01 sws01.cpp

也不起作用。

使用xcode 7.3在os x上运行。

1 个答案:

答案 0 :(得分:2)

原来,FreeBSD ports-system附带的libmicrohttpd服务器是ver。 0.9.37和libmicrohttpd.so没有MHD_http_unescape()但libmicrohttpd.a没有。最新的目前为0.9.48。用这个替换ports-version解决了我的编译问题。