libgcc_s.so.1 must be installed for pthread_cancel to work [SNAPCRAFT]

I am building my first snap and I am encountering some problems. My application uses Unity, Java, C ++ and Python, the last 2 are used to create a shared library that is used by Unity. When I try to close the application the following message is shown

libgcc_s.so.1 must be installed for pthread_cancel to work 

and the application does not close. I tried using “find /snap/newplayer/x1/ -name libgcc_s.so*” and got this result:

/snap/newplayer/x1/lib/x86_64-linux-gnu/libgcc_s.so.1 /snap/newplayer/x1/usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so /snap/newplayer/x1/usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so.1 

I’m using google translator because I’m not native to the English language.

undifined reference pthread_cancel

estoy haciendo un chat con sockets en c++ mediante hilos. Total, que tengo incluido todas las librerias necesarias, pero en una funcion que tengo para cancelar los hilos, uso el metodo “pthread_cancel”, cuando lo compilo me sale el siguiente error :

CMakeFiles/Socket.dir/main.cpp.o: In function `request_cancellation(std::thread&)': /home/k1k4ss0/CLionProjects/Socket/main.cpp:111: undefined reference to `pthread_cancel' CMakeFiles/Socket.dir/main.cpp.o: In function `std::thread::thread<void (*)(Socket&, sockaddr_in, std::__exception_ptr::exception_ptr&), std::reference_wrapper<Socket>, std::reference_wrapper<sockaddr_in>, std::reference_wrapper<std::__exception_ptr::exception_ptr> >(void (*&&)(Socket&, sockaddr_in, std::__exception_ptr::exception_ptr&), std::reference_wrapper<Socket>&&, std::reference_wrapper<sockaddr_in>&&, std::reference_wrapper<std::__exception_ptr::exception_ptr>&&)': /usr/include/c++/7/thread:122: undefined reference to `pthread_create' collect2: error: ld returned 1 exit status 

Las lineas a las que hacen referencia son las siguientes:

void request_cancellation(std::thread& thread) {           int cancelar=pthread_cancel(thread.native_handle());  // native handle se usa para obtener el manejador interno de tipo "pthread_t" codigo dado          if(cancelar!=0){              throw std::system_error(errno,std::system_category(),"El hilo no se ha podido cancelar");         }         else{             std::cout<<"Hilo eliminado correctamente"<<std::endl;          }     } 

La 111, donde tengo mi funcion para la cancelacion de hilos

Los hilos los creo de la siguiente forma :

std::thread *hilo1,*hilo2; 

Y son llamados en las siguientes lineas:

Manejador de señales:

 .... if (signum == SIGINT) {     std::cout << "¡Señal SIGINT interceptada!" << std::endl;     request_cancellation(*hilo2);     quick_exit(EXIT_SUCCESS);  // exit pero para hilos  }  ..... 

Y en el main:

....          try{             std::cout<<"Puerto a conectar: "<<puerto<<std::endl;             sockaddr_in  local=make_ip_address("127.0.0.1", puerto);                    // usamos el puerto especificado con nuestra direccion local             sockaddr_in  destino=make_ip_address(ip_server, 1);                         // usarmos la direccion especificada, con el puerto 1              Socket here(local);                   // socket con la direccion local               std::exception_ptr eptr1{};              hilo1 = new std::thread(&enviar,std::ref(here),std::ref(destino),std::ref(eptr1));        // para especificar los parametros de enviar(...), hay que usar std::ref(parametro)                std::exception_ptr eptr2{};              hilo2 = new std::thread(&recibir,std::ref(here),std::ref(destino),std::ref(eptr2));                while (!quit);                                                              // hacemos bucles infinitos  hasta que se tenga que terminar aka quit==true             request_cancellation(*hilo1);   // mandamos a terminar el hilo 1             // llamamos a terminar los dos hilos             request_cancellation(*hilo2);   // mandamos a terminar el hilo 2             hilo1->join();    // Bloquear el hilo principal hasta que hilo1 termine      // obligamos al hilo principal a esperar que estos dos terminen             hilo2->join();    // Bloquear el hilo principal hasta que hilo2 termine                if(eptr1){                 std::rethrow_exception(eptr1);              }               if(eptr2){                 std::rethrow_exception(eptr2);              }             }         catch(std::bad_alloc& e){             std::cerr<<"mytalk :"<<": memoria insuficionte\n";             return 1;          }         catch(std::system_error& e){             std::cerr <<"mytalk" << ":" <<e.what()<<'\n';             return 2;          }