Ошибки компоновщика при компиляции против glib …?

У меня возникли проблемы с составлением простой, примерной программы против glib на Ubuntu. Я получаю следующие ошибки. Я могу заставить его скомпилировать, но не связать с флагом -c , который, как я считаю, означает, что у меня установлены заголовки glib, но он не находит общий объектный код. См. Также файл Make ниже.

 $> make re gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lglib-2.0 re.c -o re /tmp/ccxas1nI.o: In function `print_uppercase_words': re.c:(.text+0x21): undefined reference to `g_regex_new' re.c:(.text+0x41): undefined reference to `g_regex_match' re.c:(.text+0x54): undefined reference to `g_match_info_fetch' re.c:(.text+0x6e): undefined reference to `g_print' re.c:(.text+0x7a): undefined reference to `g_free' re.c:(.text+0x8b): undefined reference to `g_match_info_next' re.c:(.text+0x97): undefined reference to `g_match_info_matches' re.c:(.text+0xa7): undefined reference to `g_match_info_free' re.c:(.text+0xb3): undefined reference to `g_regex_unref' collect2: ld returned 1 exit status make: *** [re] Error 1 

Используемый Makefile :

 # Need to installed libglib2.0-dev some system specific install that will # provide a value for pkg-config INCLUDES=$(shell pkg-config --libs --cflags glib-2.0) CC=gcc $(INCLUDES) PROJECT=re # Targets full: clean compile clean: rm $(PROJECT) compile: $(CC) $(PROJECT).c -o $(PROJECT) 

.c компилируется:

 #include  void print_upppercase_words(const gchar *string) { /* Print all uppercase-only words. */ GRegex *regex; GMatchInfo *match_info; regex = g_regex_new("[AZ]+", 0, 0, NULL); g_regex_match(regex, string, 0, &match_info); while (g_match_info_matches(match_info)) { gchar *word = g_match_info_fetch(match_info, 0); g_print("Found %s\n", word); g_free(word); g_match_info_next(match_info, NULL); } g_match_info_free(match_info); g_regex_unref(regex); } int main() { gchar *string = "My body is a cage. My mind is THE key."; print_uppercase_words(string); } 

Как ни странно, когда я запускаю glib-config , мне не нравится эта команда, хотя я не знаю, как сообщить Bash или Make, как просто использовать один поверх другого, когда он жалуется, что gdlib-config находится в этих двух пакетах.

 $> glib-config No command 'glib-config' found, did you mean: Command 'gdlib-config' from package 'libgd2-xpm-dev' (main) Command 'gdlib-config' from package 'libgd2-noxpm-dev' (main) glib-config: command not found 

Библиотеки в конце команды компилятора:

gcc -I / usr / include / glib-2.0 -I / usr / lib / x86_64-linux-gnu / glib-2.0 / включить re.c -o re -lglib-2.0

Параметры GCC Link :

 -llibrary
 -l библиотека
     Поиск в библиотеке по имени библиотеки при связывании. 
     (Второй вариант с библиотекой как отдельный аргумент
     только для соответствия POSIX и не рекомендуется.)

     Это имеет значение, когда в команде вы пишете эту опцию;
     компоновщик ищет и обрабатывает библиотеки и объектные файлы в
     они указаны.
     Таким образом, `foo.o -lz bar.o 'ищет библиотеку` z' после файла foo.o, но
     перед баром.  Если bar.o относится к функциям в `z ', эти функции
     не могут быть загружены.
 gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include re.c -o re -lglib-2.0 

О, черт возьми, я пробовал так много вещей и, вероятно, получил их немного неправильно, но сейчас я попробовал выше, и это сработало … soooo решил.

  • Почему компиляторы настолько глупы?
  • Как принудительно включить определение «неиспользуемых» объектов в библиотеке
  • Могу ли я смешивать статические и общедоступные библиотеки при связывании?
  • ошибка LNK2005: уже определена - C ++
  • Как использовать OpenSSL в GCC?
  • Шаблон C ++, ссылка на ошибку
  • ошибка LNK2038: обнаружено несоответствие для '_ITERATOR_DEBUG_LEVEL': значение '0' не соответствует значению '2' в main.obj
  • Порядок инициализации статических переменных
  • Interesting Posts

    Как проверить, является ли double целым числом

    Rsync с использованием regex для включения только некоторых файлов

    Алгоритм анализа алгебры для java

    Как импортировать файл Swift из другого файла Swift?

    Как динамически изменять содержимое в iframe с помощью jquery?

    C #: исключение из памяти

    Выполнить команду терминала, не сохраняя ее в .bash_history на OS X?

    Изменение размера изображения с билинейной интерполяцией без увеличения

    Удаление шпионских / вредоносных программ Delta – Невозможно установить / запустить что-либо

    TortoiseGit с ключом openssh не аутентифицируется с использованием ssh-agent

    Каков самый простой способ подключения двух компьютеров?

    как получить сообщение при получении уведомления «kCTMessageReceivedNotification» на IOS5

    Android SimpleCursorAdapter не обновляется при изменении базы данных

    Разница между Delegate.Invoke и Delegate ()

    Остановить всю сетевую активность Windows «под капотом»

    Давайте будем гением компьютера.