我为我的C程序创建了一个库,其中包括线程。我通常使用Code :: Blocks而且我从来没有遇到过问题,但现在我需要直接从终端编译程序。我看到我需要写-lpthread
,还要写我的库名(它的名字是my_lib.h)。我试图用gcc my_lib.c -c
首先编译库,这有效;之后,我尝试了这个gcc main.c my_lib.h -o main -lpthread
,但这不起作用。
那么编译使用my_lib.h的程序的正确sintax是什么?
答案 0 :(得分:2)
我认为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
文件。