如何使用包含线程的个人库编译 C 程序

How to compile a C program with a personal library that includes threads

我为我的 C 程序创建了一个库,其中包括线程。我通常使用 Code::Blocks 工作,我从来没有遇到过问题,但现在我需要直接从终端编译程序。我看到我需要写 -lpthread 还有我的库名(它的名字是 my_lib.h)。我尝试先用 gcc my_lib.c -c 编译库,这行得通;之后,我尝试了这个 gcc main.c my_lib.h -o main -lpthread,但这不起作用。

那么编译这个使用 my_lib.h 的程序的正确语法是什么?

我假设 my_lib.c 只是一个模块(目标文件)而不是共享库。

编译包括两部分-编译成目标文件然后链接:

# compiling (note the -c)
gcc -c my_lib.c
gcc -c main.c
# linking (no -c, just specify target with -o)
gcc -o main main.o my_lib.o -lpthread

头文件永远不会(明确地)编译,它们只是从 .c 文件中包含,因此永远不会生成 .o 文件。