我編寫了一個客戶程序和一個服務器程序,它使用NTL庫和Boost :: Asio在C++中爲整數分解應用程序執行客戶機/服務器通信。在Linux上使用C++編譯我的Boost/NTL程序
雙方由幾個標題和cpp文件組成。在Visual Studio中,兩個項目都可以在Windows上單獨編譯。我所做的一切,就是添加NTL的include路徑和推動這兩個項目:
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。任何想法如何解決這個問題,請?
嗨,我試着添加-lpthread。它解決了很多問題。然後我添加了-lboost_thread,現在我只是在這裏得到這個錯誤:http://pastebin.com/bVBKfcKh 對此有什麼幫助? – 2010-06-08 18:22:56
@Martin:我認爲剩下的錯誤意味着,雖然你正在與你的應用靜態鏈接。你沒有將boost本身靜態鏈接到glibc,即你的boost庫仍然依賴於其他共享庫,比如glibc。 – Troubadour 2010-06-08 18:27:20
我該如何解決這個問題?它會涉及再次編譯Boost?這是由大學系統管理員處理的,而不是我自己。 – 2010-06-08 18:31:22