Как решить ошибку g cc при поиске pkg-config? - PullRequest
0 голосов
/ 10 марта 2020

Этот вопрос, кажется, задавался миллион раз, но, к сожалению, ни один из ответов не помог мне.

Я считаю, что я правильно установил gtk. Моя среда pkg-config выглядит нормально. Я не так уверен в g cc. Я удалил все папки mingw и cygwin из своего окружения пути, поскольку буду использовать только пакеты msys2. Итак, у меня есть путь окружения следующим образом: -

GTK_LIB_DIR C: \ msys64 \ mingw64 \ lib

PKG_CONFIG_PATH C: \ msys64 \ mingw64 \ lib \ pkgconfig

Путь - C: \ msys64 \ usr \ bin; C: \ msys64 \ mingw64 \ bin;% GTK_LIB_DIR%

У меня проблема с компиляцией. Запуск этого ... g cc pkg-config --cflags gtk+-3.0 -o gtkTest C: \ dev \ test_gtk3. c pkg-config --libs gtk+-3.0

Я получаю ...

cc: error: `pkg-config: No such file or directory
gcc: error: gtk+-3.0`: No such file or directory
gcc: error: `pkg-config: No such file or directory
gcc: error: gtk+-3.0`: No such file or directory
gcc: error: unrecognized command line option '--cflags'
gcc: error: unrecognized command line option '--libs'

Я могу запустить следующие команды отдельно, с ожидаемыми результатами. например,

pkg-config --cflags gtk+-3.0
pkg-config --libs gtk+-3.0
gcc -o gtkTest C:\dev\test_gtk3.c

Конечно, последняя команда возвращает ошибку, поскольку на gtk нет ссылки. Я пробовал разные комбинации, некоторые свои. Некоторые рекомендуются, но одна ошибка сохраняется в pkg-config. например, C: \ WINDOWS \ system32> g cc -o gtkTest C: \ dev \ test_gtk3. c "pkg-config --cflags gtk + -3.0 pkg-config --libs gtk + - 3.0 "

gcc: error: pkg-config --cflags gtk+-3.0 pkg-config --libs gtk+-3.0: No such file or directory

Последний найденный мной ответ говорит " Если pkg-config сообщает, что не может найти пакет, значит, вы не установили пакет разработки Gtk, как предлагалось по вашему Linux дистрибутиву. "

Я использую Windows, но я думаю, что правильно установил gtk, так как я следовал инструкциям, и я получил то, что, как мне кажется, является ожидаемым результатом ( поправьте меня, если я ошибаюсь).

C: \ WINDOWS \ system32> pkg-config --cflags gtk + -3.0

-pthread -mms-bitfields -I/mingw64/include/gtk-3.0 -I/mingw64/include/cairo -I/m
ingw64/include -I/mingw64/include/pango-1.0 -I/mingw64/include/fribidi -I/mingw6
4/include -I/mingw64/include/atk-1.0 -I/mingw64/include/cairo -I/mingw64/include
/pixman-1 -I/mingw64/include -I/mingw64/include/freetype2 -I/mingw64/include -I/
mingw64/include/harfbuzz -I/mingw64/include -I/mingw64/include/libpng16 -I/mingw
64/include/gdk-pixbuf-2.0 -I/mingw64/include -I/mingw64/lib/libffi-3.2.1/include
 -I/mingw64/include/glib-2.0 -I/mingw64/lib/glib-2.0/include -I/mingw64/include

C: \ WINDOWS \ system32> pkg-config --libs gtk + -3.0

-L/mingw64/lib -L/mingw64/lib/../lib -L/mingw64/lib -lgtk-3 -lgdk-3 -lz -lgdi32
-limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lep
oxy -lopengl32 -lgdi32 -lpangocairo-1.0 -lm -lgdi32 -lpangoft2-1.0 -lm -lpangowi
n32-1.0 -lm -lusp10 -lgdi32 -lpango-1.0 -lm -lfribidi -lthai -ldatrie -latk-1.0
-lcairo-gobject -lcairo -lz -lpixman-1 -lm -pthread -lfontconfig -liconv -lexpat
 -lfreetype -lbz2 -lharfbuzz -lm -lusp10 -lgdi32 -lrpcrt4 -lgraphite2 -lpng16 -l
z -lgdk_pixbuf-2.0 -lm -lgio-2.0 -pthread -lintl -lshlwapi -ldnsapi -liphlpapi -
lws2_32 -lgmodule-2.0 -pthread -lintl -lz -lgobject-2.0 -pthread -lintl -lffi -l
glib-2.0 -lintl -lws2_32 -lole32 -lwinmm -lshlwapi -pthread -lm -lpcre

C: \ WINDOWS \ system32> g cc -o gtkTest C: \ dev \ test_gtk3. c | pkg-config --cflags --libs gtk + -3.0

-pthread -mms-bitfields -I/mingw64/include/gtk-3.0 -I/mingw64/include/cairo -I/m
ingw64/include -I/mingw64/include/pango-1.0 -I/mingw64/include/fribidi -I/mingw6
4/include -I/mingw64/include/atk-1.0 -I/mingw64/include/cairo -I/mingw64/include
/pixman-1 -I/mingw64/include -I/mingw64/include/freetype2 -I/mingw64/include -I/
mingw64/include/harfbuzz -I/mingw64/include -I/mingw64/include/libpng16 -I/mingw
64/include/gdk-pixbuf-2.0 -I/mingw64/include -I/mingw64/lib/libffi-3.2.1/include
 -I/mingw64/include/glib-2.0 -I/mingw64/lib/glib-2.0/include -I/mingw64/include
-L/mingw64/lib -L/mingw64/lib/../lib -L/mingw64/lib -lgtk-3 -lgdk-3 -lz -lgdi32
-limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lep
oxy -lopengl32 -lgdi32 -lpangocairo-1.0 -lm -lgdi32 -lpangoft2-1.0 -lm -lpangowi
n32-1.0 -lm -lusp10 -lgdi32 -lpango-1.0 -lm -lfribidi -lthai -ldatrie -latk-1.0
-lcairo-gobject -lcairo -lz -lpixman-1 -lm -pthread -lfontconfig -liconv -lexpat
 -lfreetype -lbz2 -lharfbuzz -lm -lusp10 -lgdi32 -lrpcrt4 -lgraphite2 -lpng16 -l
z -lgdk_pixbuf-2.0 -lm -lgio-2.0 -pthread -lintl -lshlwapi -ldnsapi -liphlpapi -
lws2_32 -lgmodule-2.0 -pthread -lintl -lz -lgobject-2.0 -pthread -lintl -lffi -l
glib-2.0 -lintl -lws2_32 -lole32 -lwinmm -lshlwapi -pthread -lm -lpcre
C:\dev\test_gtk3.c:1:10: fatal error: gtk/gtk.h: No such file or directory
    1 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~
compilation terminated.

Кто-нибудь здесь боролся с этим часами, как и я, и наконец понял, в чем проблема. Пожалуйста, поделитесь своим решением. Спасибо.

1 Ответ

0 голосов
/ 10 марта 2020

Использование этого Установка gtk и компиляция с использованием g cc в windows? помогла мне преодолеть ошибки. Я использовал следующее предложение:

"Вместо командного файла может оказаться более удобным создать пользовательскую переменную среды и хранить там флаги, чтобы вы могли компилировать ее изнутри. обычная командная строка. "

Итак, я создал две новые переменные среды (например, GTK_FLAGS_VARS; GTK_LIBS_VARS) и вставил выходные данные в значения переменных. Затем в путь поместите% GTK_FLAGS_VARS%;% GTK_LIBS_VARS% После g cc -o gtkTest C: \ dev \ test_gtk3. c% GTK_FLAGS_VARS%% GTK_LIBS_VARS%

...