我正在尝试使用clang++ 38在FreeBSD 10.2 RELEASE上编译硅网络服务器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);
}
我尝试应用此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上工作。
最佳答案
原来FreeBSD ports系统附带的libmicrohttpd服务器是ver。 0.9.37,而libmicrohttpd.so没有MHD_http_unescape(),但libmicrohttpd.a有。最新的是0.9.48。以此替换ports-version解决了我的编译问题。