Я думаю, что вы пытаетесь скомпилировать отдельный исходный файл, который не предназначен для самостоятельной работы. Две причины.
Первая причина: config.h
- это имя по умолчанию для файла заголовка, выводимого Autoconf, который содержит определения для конкретной платформы. Вот почему вы нигде его не найдете - он генерируется, когда вы запускаете ./configure
в своем проекте, и его содержимое зависит от того, как настроена ваша система. Так что он не будет включен ни в один проект, вы должны создать его самостоятельно с помощью Autoconf. Или просто закомментируйте #include <config.h>
и посмотрите, какие определения отсутствуют, затем определите их сами.
Другая причина:
В настоящее время я пытаюсь скомпилировать пример сокета testsocket.c, и во время компиляции я получаю неопределенную ссылку на «create_child_plug». Я не вижу причин для этого не работать, кроме как в этом заголовке.
Но я все равно могу ошибаться.
На самом деле этот файл содержит определение create_child_plug
:
extern guint32 create_child_plug (guint32 xid, gboolean local);
Так что проблема не в том, что create_child_plug
не определен. Вам не нужен заголовок, он определен прямо в исходном файле. extern
означает, что фактический код этой функции находится в другом исходном файле. В этом случае вы получаете ошибку времени компоновки (не компиляции), потому что компоновщик не может найти код для этой функции. Вы должны искать его в файле .c
, а не в файле .h
, и компилировать этот код тоже.
Я предлагаю вам скачать весь исходный код GTK и скомпилировать его, а также запускать тестовые программы оттуда вместо того, чтобы выбирать отдельные исходные файлы из сети.