===== Configuración en Eclipse para PThread ===== ==== Opciones de compilación ==== {{:pub:eclipse_pthread_compiler.png?500}} **En la ventana de propiedades ‘''Properties''’ del proyecto seleccionar la opción ‘''C/C++ build –> GCC C Compiler –> Miscellaneous''’.** **En la primera pestaña ‘''Tool Settings''’, en la opción ‘''Other Flags''’ ****insertar el término**** ‘''-pthread''’** ==== Opciones de enlazado ==== {{:pub:eclipse_pthread_linker.png?500}} **En la ventana de propiedades ‘''Properties''’ del proyecto seleccionar la opción ‘''C/C++ build –> Settings –> GCC C Linker –> Libraries''’.** **En la sección de librerias ‘''Libraries (-l)''’, insertar la librería ‘''pthread''’ ** ===== Instalación de librería PThread en Windows ===== Para el desarrollo software en C/C++ portable con [[https://www.eclipse.org/cdt/|Eclipse CDT]] bajo **Windows** se recomienda la instalación del toolchain [[http://www.mingw.org/|MinGW]] mediante el instalador [[http://tdm-gcc.tdragon.net/|TDM-GCC]], que incluye la capa de emulación "winpthreads" para la librería de [[https://en.wikipedia.org/wiki/POSIX_Threads|POSIX threads]] (pthreads) Una vez instalado con las opciones por defecto aparece instalado en: > C:\TDM-GCC-32 y comprobaremos que el directorio con los ejecutables, se encuentra en el camino de búsqueda ''%PATH%'', en este caso: > echo %PATH%> ...;C:\TDM-GCC-32\bin Por **línea de comandos** podemos comprobar el funcionamiento con un archivo fuente de ejemplo, p.ej.: #include #include void* hello(void* id) { printf("%d: Hello world!\n", *((int*) id)); return 0; } int main(int argc, char* argv[]) { const int COUNT = 5; int i; pthread_t thread[COUNT]; int ids[COUNT]; for (i = 0; i Mediante la **compilación por línea de comandos**: > gcc.exe −o hello hello−pthread.c −lpthread Se debería obtener un **resultado de ejecución** similar a: > hello.exe In main: creating thread 0 In main: creating thread 1 Hello World! It's me, thread #0! In main: creating thread 2 Hello World! It's me, thread #1! In main: creating thread 3 Hello World! It's me, thread #2! In main: creating thread 4 Hello World! It's me, thread #3! Hello World! It's me, thread #4! Tras la comprobación de la correcta instalación, en la siguiente ejecución de Eclipse CDT se detecta la existencia del toolchain MinGCC que podremos seleccionar al crear un nuevo proyecto de C/C++: {{:pub:eclipse_pthread_win.png?400|}} La configuración de librería debe hacerse según el apartado [[pub:eclipse_pthread|anterior]] para llevar a cabo una **compilación** y **ejecución directa** correcta en la pestaña de salida de la consola. {{:pub:eclipse_pthread_exec.png?700|}} En algunos casos se ha detectado que la invocación del depurarador provoca un error por el nombre en Windows del mismo, que no se identifica por Eclipse CDT (se espera encontrar ''gdb.exe'' en el directorio de ejecutables), lo que puede subsanarse al invocar de nuevo al instalador y cambiar la versión de GDB por defecto por la incluida en el paquete original MinGW. {{:pub:eclipse_pthread_gdb.png?700|}} La librería **POSIX thread (pthread)** de esta distribución para Windows se encuentra integrada a su vez en una librería que incluye además otras especificaciónes de la //API de Windows//, especialmente funciones de multimedia, por lo que puede realizarse en esos casos un único enlace con la librería de más alto nivel denominada ''winmm.lib'' cuyo fichero de cabecera es ''mmsystem.h''. Una **compilación por línea de comandos** válida entonces sería: > gcc.exe −o hello hello−pthread.c −lwinmm y la equivalente configuración para Eclipse CDT.