我编写了一个客户端程序和一个服务器程序,它使用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错误,我发布了here。知道怎么解决这个问题吗?
答案 0 :(得分:1)
你遇到很多与丢失的pthread符号有关的错误。尝试添加
-lpthread
到你的链接线。
答案 1 :(得分:0)
我不确定,但我怀疑你不能在静态链接的二进制文件中进行多线程处理。