Как скомпилировать программу на C с личной библиотекой, включающей потоки
Я создал библиотеку для своих программ на C, и это включает потоки. Я обычно работаю с Code::Blocks и у меня никогда не было проблем, но теперь мне нужно компилировать программы прямо из терминала. Я видел, что мне нужно написать -lpthread
но также и имя моей библиотеки (ее имя my_lib.h). Я попытался сначала скомпилировать библиотеку с gcc my_lib.c -c
и это работает; после, я попробовал это gcc main.c my_lib.h -o main -lpthread
, но это не работает.
Так какой же правильный синтаксис для компиляции этой программы, которая использует my_lib.h?
1 ответ
Я предполагаю 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
файл.