Как скомпилировать программу на 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 файл.

Другие вопросы по тегам