Intenta eliminar el -std=c99 . Esto evita que las macros POSIX se definan en <features.h> , lo que evita que <unistd.h> de incluir <getopt.h> .O incluya getopt.h usted mismo.
Agregar #include <getopt.h> entre los incluidos.
Tu nube no quita -std=c99 .En su lugar, agregue #define _POSIX_C_SOURCE 2 al principio.
No hay absolutamente ninguna necesidad de cambiar el -std o para incluir getopt.h directamente.
Lo correcto si desea utilizar las características del lenguaje C99 (o cualquier otro estándar) junto con las funciones POSIX (como getopt ) es definir _POSIX_C_SOURCE a la versión correcta (por ejemplo, 200809L ) antes de incluir los respectivos encabezados. Para obtener más detalles, consulte feature_test_macros(7).