2010-06-08 5 views
1

Я написал клиентскую программу и серверную программу, которая использует библиотеку NTL и Boost :: Asio для обмена данными между клиентом и сервером для приложения с целым числом факторизации на C++.Компиляция моей программы Boost/NTL с помощью C++ в Linux

Обе стороны состоят из нескольких заголовков и файлов cpp. Оба проекта компилируются индивидуально в Windows в Visual Studio. Все, что я сделал, было добавить включать пути NTL и увеличить к обоим проектам:

Additional include paths: "D:\Downloads\WinNTL-5_5_2\include";D:\boost_1_42_0 

Кроме того, для обоих проектов, я добавил две библиотеки пути к обоим проектам в VS:

Additional library directories: D:\boost_1_42_0\stage\lib;"D:\Documents\Visual Studio 2008\Projects\ntl\Debug" 

И добавлено в Дополнительные зависимости:

ntl.lib 

Как сказано, он отлично компилируется в Windows. Но когда я поставил код на машине Linux, предоставленной университетом, я пытаюсь скомпилировать со следующим утверждением

c++ -I/appl/htopopt/Linux_x86_64/NTL-5.4.2/include -I/appl/htopopt/Linux_x86_64/boost_1_43_0/include client_protocol.cpp mpqs_client.cpp mpqs_sieve.cpp mpqs_helper.cpp -o mpqs_helper -L/appl/htopopt/Linux_x86_64/NTL-5.4.2/lib -lntl -L/appl/htopopt/Linux_x86_64/gmp-4.2.1/lib -lgmp -lm -L/appl/htopopt/Linux_x86_64/boost_1_43_0/lib -lboost_system -static 

При этом, я получаю huuuge ошибку, которую я отправил here. Любая идея, как это исправить, пожалуйста?

ответ

0

Я не уверен, но я подозреваю, что вы не можете выполнять многопоточность в статично связанном двоичном файле.

1

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

-lpthread 

на вашу линку.

+0

Привет, я попробовал добавить -lpthread. У него было много проблем. Затем я добавил -lboost_thread, и теперь я просто получаю эту ошибку здесь: http://pastebin.com/bVBKfcKh Любая помощь по этому вопросу? –

+0

@Martin: Я думаю, что оставшаяся ошибка означает, что, хотя вы связываете форматирование с вашим приложением. вы не привязывали само статично к glibc, то есть ваша библиотека повышения по-прежнему зависит от других разделяемых библиотек, таких как glibc. – Troubadour

+0

Как я могу это исправить? Будет ли это включать компиляцию Boost снова? Это было обработано администратором системы университета, а не я. –

Смежные вопросы