2015-08-25 57 views
0

我目前有一個需要使用pthreads的項目。在我自己的計算機上,我有pthread-win32安裝程序,並且可以按如下方式編譯該項目,並使其正常工作。創建不需要DLL或庫的.exe

gcc -o3 Engine.c -o Engine.exe -lpthread 

的問題是,我希望能夠以這個.exe文件發送給其他人誰沒有GCC,誰不具備並行線程。我試着將它發送給我的另一臺計算機,但無法運行它,拋出一條關於未安裝lpthreads的錯誤消息。

任何幫助表示讚賞,感謝

+3

鏈接*靜態*取而代之?它會使可執行文件更大(甚至可能更大),但它會更加獨立。 –

+0

這聽起來像我在找什麼。我將如何去靜態鏈接它? – AndrewGrant

回答

-1

這可能最終會產生巨大的.exe,但不管怎麼說,使用靜態鏈接...

gcc -O3 Engine.c -o Engine.exe -Wl,-Bstatic -lpthread 

:那個奇怪-Wl,-Bstatic需要是正確的類型(它是鏈接器的參數)。

您需要指定-Wl,-Bstatic之前的任何-lmystaticlibrary可能指定您要靜態鏈接的庫。如果想讓其他庫動態鏈接,請在之後通過-Wl,-Bdynamic靜態庫。

Docs(long and boringhere

+0

雖然我能夠使用它,並在我自己的機器上運行它,但我仍然在我的其他計算機上收到「pthread.dll」丟失錯誤。 – AndrewGrant

+0

@AndrewGrant:你身邊有你的'pthread.lib'嗎?編譯器可能無法找到它,並且應該明確地將其提供給它,這會導致默認情況下使用動態庫('.dll')。 – 3442

+0

我認爲你是正確的是這個問題。我應該如何解決這個問題?我遵循這裏找到的說明。 http://www.ipd.uni-karlsruhe.de/multicore/research/download/HowToGuide-POSIX.pdf – AndrewGrant