在Linux上用c ++编译我的Boost / NTL程序

时间:2010-06-08 16:09:04

标签: c++ boost ntl

我编写了一个客户端程序和一个服务器程序,它使用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。知道怎么解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

你遇到很多与丢失的pthread符号有关的错误。尝试添加

-lpthread

到你的链接线。

答案 1 :(得分:0)

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