Я пытаюсь создать автономный двоичный файл, содержащий API-интерфейс Rest, созданный с использованием инфраструктуры фисташек. Для этого я создал образ докера, используя «FROM i386 / ubuntu: 16.04» и установив в нем все зависимости. Но двоичный файл выдает ошибку «Ошибка сегментации», когда я пытаюсь выполнить его, и его компиляция показывает некоторые предупреждения.
Я компилирую его с помощью этой команды (включая предупреждения о выходе):
g++ server.cpp -std=c++11 -lpistache -lssl -lcrypto -pthread -ldl -static -o server
root@91cb986a4e48:/workspace# g++ server.cpp -std=c++11 -lpistache -lssl -lcrypto -pthread -ldl -static -o server
/usr/lib/gcc/i686-linux-gnu/5/../../../i386-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0xa): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
//usr/local/lib/libpistache.a(listener.cc.o): In function `Pistache::Tcp::Listener::bind(Pistache::Address const&)':
listener.cc:(.text+0x1b94): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
//usr/local/lib/libpistache.a(net.cc.o): In function `Pistache::Address::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
net.cc:(.text+0x14ce): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
server.cpp содержит код hello world из pistache :
#include <pistache/endpoint.h>
using namespace Pistache;
struct HelloHandler : public Http::Handler {
HTTP_PROTOTYPE(HelloHandler)
void onRequest(const Http::Request&, Http::ResponseWriter writer) override{
writer.send(Http::Code::Ok, "Hello, World!");
}
};
int main() {
Http::listenAndServe<HelloHandler>("*:9080");
}
Когда я компилирую и запускаю его на своем компьютере, проблем не возникает (компиляция с помощью "g ++ server.cpp -std = c ++ 11 -lpistache -o server"), но как я могу заставить его работать на моей плате i686?