我目前有一個需要使用pthreads的項目。在我自己的計算機上,我有pthread-win32安裝程序,並且可以按如下方式編譯該項目,並使其正常工作。創建不需要DLL或庫的.exe
gcc -o3 Engine.c -o Engine.exe -lpthread
的問題是,我希望能夠以這個.exe文件發送給其他人誰沒有GCC,誰不具備並行線程。我試着將它發送給我的另一臺計算機,但無法運行它,拋出一條關於未安裝lpthreads的錯誤消息。
任何幫助表示讚賞,感謝
我目前有一個需要使用pthreads的項目。在我自己的計算機上,我有pthread-win32安裝程序,並且可以按如下方式編譯該項目,並使其正常工作。創建不需要DLL或庫的.exe
gcc -o3 Engine.c -o Engine.exe -lpthread
的問題是,我希望能夠以這個.exe文件發送給其他人誰沒有GCC,誰不具備並行線程。我試着將它發送給我的另一臺計算機,但無法運行它,拋出一條關於未安裝lpthreads的錯誤消息。
任何幫助表示讚賞,感謝
這可能最終會產生巨大的.exe
,但不管怎麼說,使用靜態鏈接...
gcc -O3 Engine.c -o Engine.exe -Wl,-Bstatic -lpthread
注:那個奇怪-Wl,-Bstatic
需要和是正確的類型(它是鏈接器的參數)。
您需要指定-Wl,-Bstatic
之前的任何-lmystaticlibrary
可能指定您要靜態鏈接的庫。如果想讓其他庫動態鏈接,請在之後通過-Wl,-Bdynamic
靜態庫。
Docs(long and boring)here。
雖然我能夠使用它,並在我自己的機器上運行它,但我仍然在我的其他計算機上收到「pthread.dll」丟失錯誤。 – AndrewGrant
@AndrewGrant:你身邊有你的'pthread.lib'嗎?編譯器可能無法找到它,並且應該明確地將其提供給它,這會導致默認情況下使用動態庫('.dll')。 – 3442
我認爲你是正確的是這個問題。我應該如何解決這個問題?我遵循這裏找到的說明。 http://www.ipd.uni-karlsruhe.de/multicore/research/download/HowToGuide-POSIX.pdf – AndrewGrant
鏈接*靜態*取而代之?它會使可執行文件更大(甚至可能更大),但它會更加獨立。 –
這聽起來像我在找什麼。我將如何去靜態鏈接它? – AndrewGrant