1

我编写了一个客户端程序和一个服务器程序,它使用 NTL 库和 Boost::Asio 为整数分解应用程序进行客户端/服务器通信,使用 C++。

双方都由几个头文件和 cpp 文件组成。这两个项目都可以在 Visual Studio 中的 Windows 上单独编译。我所做的只是将 NTL 和 Boost 的包含路径添加到两个项目中:

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 错误,我在此处发布了该错误。知道如何解决这个问题吗?

4

2 回答 2

1

您会遇到很多与缺少 pthread 符号有关的错误。尝试添加

-lpthread

到您的链接行。

于 2010-06-08T16:33:51.037 回答
0

我不确定,但我怀疑你不能在静态链接的二进制文件中执行多线程。

于 2010-06-08T16:17:22.113 回答