Qual è la differenza tra gcc -pthread
e gcc -lpthread
che viene utilizzata durante la compilazione di programmi multithreading?Differenza tra -pthread e -lpthread durante la compilazione
risposta
-pthread
indica al compilatore di collegarsi alla libreria pthread e configurare la compilazione per i thread.
Ad esempio, il seguente mostra la macro che vengono definite quando l'opzione -pthread
si abitua sul pacchetto GCC installato sulla mia macchina Ubuntu:
$ gcc -pthread -E -dM test.c > dm.pthread.txt
$ gcc -E -dM test.c > dm.nopthread.txt
$ diff dm.pthread.txt dm.nopthread.txt
152d151
< #define _REENTRANT 1
208d206
< #define __USE_REENTRANT 1
Utilizzando l'opzione -lpthread
fa sì che solo la libreria pthread da collegare - le macro predefinite non vengono definite.
Bottom line: è necessario utilizzare l'opzione -pthread
.
Nota: l'opzione -pthread
è documentata come opzione specifica piattaforma nella documentazione GCC, quindi potrebbe non essere sempre disponibile. Tuttavia, è disponibile su piattaforme che i doc del GCC non lo elencano esplicitamente (come i386 e x86-64) - dovresti usarlo quando disponibile.
Si noti inoltre che le altre opzioni simili sono state usate da GCC, come ad esempio -pthreads
(indicato come sinonimo di -pthread
su Solaris 2) e -mthread
(per il supporto filo MinGW-specifici su i386 e x86-64 di Windows). La mia comprensione è che GCC sta cercando di passare a utilizzare -pthread
in modo uniforme andando avanti.
Che è strano perché contraddice direttamente POSIX. POSIX stabilisce che passare '-lpthread' è sufficiente per ottenere l'intera libreria di threading POSIX. – fuz
@FUZxxl Passare '-lpthread' * fa * ottenere l'intera libreria di threading POSIX. – immibis
@immibis No, cosa intendo dire, POSIX dice che il collegamento con '-lpthread' dovrebbe essere sufficiente per ottenere il pieno supporto di pthreads. Non dovrebbero essere necessari altri flag di compilazione. – fuz
-pthread
Aggiunge il supporto per il multithreading con la libreria pthreads. Questa opzione imposta i flag sia per il preprocessore che per il linker (man gcc
).
mentre
-lpthread
viene in esistenza durante il collegamento non ci sarà alcuna influenza durante la pre-elaborazione.
- 1. Importanza del flag -pthread durante la compilazione
- 2. gcc differenza tra -pthread e -pthreads?
- 3. La differenza tra la compilazione e la pubblicazione in VS?
- 4. Compilazione in Eclipse con -lpthread di gcc e -lrt impostare
- 5. gcc -lpthread non funziona
- 6. Durante la compilazione del codice x64, qual è la differenza tra "x86_amd64" e "amd64"?
- 7. Qual è la differenza tra debug e compilazione?
- 8. durante la compilazione di boost in Android
- 9. La differenza tra $ * e $ @
- 10. Qual è la differenza tra il thread multithreading e pthread o thread Java?
- 11. Differenza tra '{' e '[' durante la formattazione dell'oggetto JSON
- 12. Ottenere errori durante la compilazione?
- 13. GCC compilazione fallisce con pthread e l'opzione std = c99
- 14. Grails BuildConfig.groovy, differenza tra build, compilazione e runtime?
- 15. Differenza tra $ HOME e '~' (tilde)?
- 16. Qual è la differenza tra ("") e (null)
- 17. Errore ARC durante la compilazione
- 18. Automatizza xsd.exe durante la compilazione
- 19. C++ errori durante la compilazione
- 20. Differenza tra stringa e StaticString
- 21. Utilizzo di pthread in C++
- 22. Differenza tra 'strcpy' e 'strcpy_s'?
- 23. Differenza tra DTLS e TLS
- 24. Differenza tra Parameters.Add e Parameters.AddWithValue
- 25. Differenza tra setContentView e LayoutInflater
- 26. durante la compilazione Outlook 2010 add-in
- 27. Differenza delle differenze tra gradiente tra compilazione, progetto apk, progetto di compilazione, fornito, progetto di implementazione
- 28. Differenza tra IKVM.Reflection.Emit e Mono.Cecil
- 29. Differenza tra spessori e mozzi
- 30. Differenza tra malloc e dlmalloc
Oops, sì. Ecco il duplicato corretto: http://stackoverflow.com/q/2127797/694576 – alk
Possibile duplicato di [Significance of -pthread flag durante la compilazione] (https://stackoverflow.com/questions/2127797/gcc-significance-of -pthread-flag-when-compiling) – jww