diff --git a/libtcc.c b/libtcc.c
index 827d3c02..d631a430 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -2410,8 +2410,10 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
     if (s->output_type == 0)
         s->output_type = TCC_OUTPUT_EXE;
 
-    if (pas->pthread && s->output_type != TCC_OUTPUT_OBJ)
-        tcc_set_options(s, "-lpthread");
+    if (pas->pthread && s->output_type != TCC_OUTPUT_OBJ) {
+      args_parser_add_file(s, "-lpthread", TCC_FILETYPE_BINARY);
+      s->nb_libraries++;
+    }
 
     if (s->output_type == TCC_OUTPUT_EXE)
         tcc_set_linker(s, (const char *)pas->linker_arg.data);