gpt4 book ai didi

在MinGW(使用MSYS)中为Windows 10编译GTK+-2.0程序

转载 作者:行者123 更新时间:2023-11-30 16:28:11 26 4
gpt4 key购买 nike

我有一个程序可以在Linux中完美编译,直到我向其中添加GTK(它使用ncurses)为止,它也可以在Windows中使用MinGW(使用MSYS)完美编译。

我从 https://sourceforge.net/projects/gtk-mingw/files/gtk%2B2/ 下载了 gtk+-2.24.11-1-bundle.7z .

我将其提取到 C:\MinGW 替换所有要求替换的内容。

这是主 Makefile 的一部分:

################################################################################
# executables

ifeq ($(OS), linux)
BIN_NAME = mine-sweeper
else ifeq ($(OS), win)
BIN_NAME = mine-sweeper.exe
endif

export BIN_NAME

################################################################################
# Make variables (CC, etc...)
ifeq ($(OS), linux)
CC = gcc
LD = ld
else ifeq ($(OS), win)
CC = gcc.exe
LD = ld.exe
endif

export CC
export LD

################################################################################
CFLAGS = -std=c11
CFLAGS += `pkg-config --cflags gtk+-2.0`

GTK_LIBS = `pkg-config --libs gtk+-2.0`
ifeq ($(OS), linux)
CFLAGS += -D OS_LINUX

LIBS = -l m -l ncursesw $(GTK_LIBS)
else ifeq ($(OS), win)
CFLAGS += -D OS_WIN
# curses
CFLAGS += -D _XOPEN_SOURCE=500 -I /mingw/include/ncursesw -I /mingw/include

CURSES_LIBS = -L /mingw/lib -l ncursesw -l psapi
LIBS = -static -l m $(CURSES_LIBS) $(GTK_LIBS)
endif

export CFLAGS
export LIBS

以及失败的 Makefile:

MAIN_OBJ_LIBALX = alx_lib.o
MAIN_OBJ_ABOUT = about_mod.o
MAIN_OBJ_CTRL = ctrl_mod.o
MAIN_OBJ_GAME = game_mod.o
MAIN_OBJ_MENU = menu_mod.o
MAIN_OBJ_PLAY = player_mod.o
MAIN_OBJ_SAVE = save_mod.o
MAIN_OBJ_XYZZY = xyzzy_mod.o
MAIN_OBJS = $(OBJ_DIR)/main.o \
$(patsubst %,$(LIBALX_OBJ_DIR)/%,$(MAIN_OBJ_LIBALX)) \
$(patsubst %,$(ABOUT_OBJ_DIR)/%,$(MAIN_OBJ_ABOUT)) \
$(patsubst %,$(CTRL_OBJ_DIR)/%,$(MAIN_OBJ_CTRL)) \
$(patsubst %,$(GAME_OBJ_DIR)/%,$(MAIN_OBJ_GAME)) \
$(patsubst %,$(MENU_OBJ_DIR)/%,$(MAIN_OBJ_MENU)) \
$(patsubst %,$(PLAY_OBJ_DIR)/%,$(MAIN_OBJ_PLAY)) \
$(patsubst %,$(SAVE_OBJ_DIR)/%,$(MAIN_OBJ_SAVE)) \
$(patsubst %,$(XYZZY_OBJ_DIR)/%,$(MAIN_OBJ_XYZZY))

$(BIN_NAME): $(MAIN_OBJS)
$(Q)$(CC) $^ -o $@ $(LIBS)

看起来编译.c文件没有问题,但是在make的最后阶段出现了问题:

~/mine-sweeper$ make OS=win
\tCC alx_cmp.o
\tCC alx_file.o
\tCC alx_input.o
\tCC alx_mask.o
\tCC alx_math.o
\tCC alx_ncur.o
\tCC alx_seed.o
\tLD alx_lib.o

\tCC about.o
\tLD about_mod.o

\tCC start.o
\tLD ctrl_mod.o

\tCC game.o
\tCC game_iface.o
\tLD game_mod.o

\tCC parser.o
\tCC menu_iface.o
\tCC menu_clui.o
\tCC menu_tui.o
\tCC menu_gui.o
\tLD menu_mod.o

\tCC player_iface.o
\tCC player_clui.o
\tCC player_tui.o
\tCC player_gui.o
\tLD player_mod.o

\tCC save.o
\tCC score.o
\tLD save_mod.o

\tCC xyzzy.o
\tLD xyzzy_mod.o

\tCC main.o

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lgtk-win32-2.0
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lgdk-win32-2.0
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -latk-1.0
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lgio-2.0
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lgdk_pixbuf-2.0
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lfreetype
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lfontconfig
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lgobject-2.0
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lglib-2.0
collect2.exe: error: ld returned 1 exit status
make[1]: *** [mine-sweeper.exe] Error 1
make: *** [binary] Error 2

我错过了什么?

编辑:我还从同一个 sourceforge 链接下载了 gtk+-2.24.11-binwin32-1.7z ,并将其提取到 MinGW 的根目录中,然后再次尝试,得到了相同的结果。

将包解压到 MinGW 的根目录中是否正确,还是应该放入 MinGW 的某个子目录中?

<小时/>

已解决:安装了MSYS2,它有一个gtk2的包,一切都可以编译,还可以安装x86或x64。

最佳答案

您正在尝试链接到 32 位 bundle ,但没有下载 win32 bundle 。您要么想使用 64 位 mingw 进行构建,要么获取 gtk 堆栈的 mingw32 包。

关于在MinGW(使用MSYS)中为Windows 10编译GTK+-2.0程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com