2015-12-11 4 views
1

Введение Я знаю о C++: All boost path operations segfault (OSX/GCC)C++: Все подталкивание PATH Операции Segfault (Ubuntu/г ++)

И, как вы можете, я не изменил условность имени субъекта.

Но я использую систему Ubuntu, и у меня есть проблема, подобная автору выше.

Я не понимаю выше решение (как его решить?) (И я использую другую систему), поэтому я создаю свой вопрос.

Подводя итог:

Проблема появляется, например, когда я бегу:

int main(){ 
    std::string s = boost::filesystem::current_path().string(); //SIGESV 
    return 0; 
} 

Debugger сказал:

Program received signal SIGSEGV, Segmentation fault. 
0x00007fffefb57f7e in ??() from /lib/x86_64-linux-gnu/libc.so.6 

Пожалуйста, помогите мне.

+0

Вы сами создали бинарные файлы повышения? – Bathsheba

+0

Исходя из другого вопроса: как вы установили boost? И g ++? Все с 'apt-get' /' synaptic'? – BoBTFish

+0

Все с apt-get/synaptic: Да \t Вы сами создали бинарные файлы boost: No – user5468942

ответ

1

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

Вы должны сами создавать бинарные файлы повышения, используя инструменты, которые они предоставляют.

Это требует некоторых усилий (я помню пару дней отчаянного разочарования), чтобы привыкнуть к их инструменту построения, но стоит потратить время. Документация по ускорению намного лучше, чем когда-то.

+0

Я был бы удивлен, если версии из официальных репозиториев несовместимы (хотя и не *, которые * удивлены). Может быть, нужен какой-то флаг компилятора? – BoBTFish

+0

Я все равно не рискну. В частности, существует такая гибкость в классах, как 'std :: string'; необходимо использовать почти точный набор флагов компилятора. Потратив время на изучение b2 (давайте, это намного проще, чем старый bjam ;-)) - это хорошо потраченное время. – Bathsheba

+0

@ Батшеба вы могли бы рассказать об этом больше? Я не понимаю, но это кажется интересным. Особенно это привлекло мое внимание: «Потратив время на изучение b2 (давайте, это намного проще, чем старый bjam ;-)) хорошо потрачено время». Что такое b2? Что такое бьям? – user5468942