Приложение в другой системе падает при запуске без сообщения об ошибке для sudo, Ошибка сегментации для non-sudo

Я написал сервер websocket ++ для Ubuntu 13.10 и пытаюсь выполнить его на Linux Mint 16.

Я установил все зависимости, и первая строка под main это cout который никогда не срабатывает.

Это команда компиляции:

g++ -o Dgn Dgn.cpp ed25519-donna-master/ed25519.o
-Og -std=c++0x -I ~/Dgn -D_WEBSOCKETPP_CPP11_STL_ -D_WEBSOCKETPP_NO_CPP11_REGEX_
-lboost_regex -lboost_system -L/usr/lib -lssl -lcrypto -pthread -lpqxx
-lboost_thread -ljson_spirit -lgmp -lgmpxx

Если я выполню с sudo использовать ограниченные порты, он сразу завершается неудачно, без ошибок возвращаясь в командную строку.

Если я выполню без sudoэто отпечатки Segmentation Fault и сразу выходит из командной строки.

Каталоги в ~/Dgn присутствуют в новой системе.

Я сделал быстрый простой тест и проверил, может ли простой пример websocket ++ скомпилироваться и выполнить нормально, и он был успешным.

Обе системы являются 64-битными. Разница лишь в дистрибутивах, но Linux Mint 16 основан на Ubuntu 13.10, и все команды для настройки были идентичны.

Как это можно скомпилировать так, чтобы оно могло выполняться в другой системе?


В качестве дальнейшего теста я скомпилировал его на новой системе, и он работает.

Разве невозможно скомпилировать на одной системе и запустить на другой?

GDB

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de58da in ?? () from /lib64/ld-linux-x86-64.so.2

0

Решение

Дело в том, что cout линия никогда не срабатывает (полагаю, << std::endl) означает, что сбой происходит в конструкторе статического объекта. Самый простой способ отладки — разрешить дамп ядра (см. man limits) и проверить дамп с помощью GDB. Пока это все, что я могу придумать. Более подробная информация поможет.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector