无法运行已编译的C + Gtk + -3软件

时间:2018-02-16 21:53:41

标签: c dll makefile gtk nmake

目前我刚刚用C和GTK + -3创建了一个小软件,一切都在我的机器上完美运行但是当我在另一台笔记本电脑上测试软件时 有几个引用DLL库的错误。 在第一次尝试时,缺少libglib-2.0-0.dll库,然后是libwinpthread-1.dll,libintl-8.dll,libiconv-2.dll,库,每当我添加到缺失的库时,都会出现一个新的丢失库。

我想知道在编译时是否有任何方法可以将库包含在可执行文件中?

我正在使用mingw64.exe进行构建,这是我当前的makefile:

# Tools
CC=x86_64-w64-mingw32-gcc
LD=x86_64-w64-mingw32-gcc
CFLAGS=--std=c99 --pedantic -Wall -W -Wmissing-prototypes -g
LDFLAGS=
SGTKFLAGS=`pkg-config --cflags gtk+-3.0`
EGTKFLAGS=`pkg-config --libs gtk+-3.0`

# Files
EXEC=text_decoration
HEADERS=model.h view.h controller.h
MODULES=model.c view.c controller.c text_decoration.c
OBJECTS=model.o view.o controller.o text_decoration.o

# Commands
RM=rm
RMFLAGS=-f

# Start point
all:$(EXEC)

# Règle pour la génération de l'exécutable
text_decoration: $(MODULES) $(HEADERS)
    $(CC) $(SGTKFLAGS) -g -o $(EXEC) $(MODULES) $(HEADERS) $(EGTKFLAGS)

clean:
    $(RM) $(RMFLAGS) $(EXEC).exe

我认为这是因为使用make命令进行编译, 当我尝试使用命令nmake时,我遇到以下错误:

C:\msys64\home\Mooo\a>nmake

Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        x86_64-w64-mingw32-gcc `pkg-config --cflags gtk+-3.0` -g -o text_decoration model.c view.c controller.c text_decoration.c model.h view.h controller.h `pkg-config --libs gtk+-3.0`
x86_64-w64-mingw32-gcc.EXE: error: `pkg-config: No such file or directory
x86_64-w64-mingw32-gcc.EXE: error: gtk+-3.0`: No such file or directory
x86_64-w64-mingw32-gcc.EXE: error: `pkg-config: No such file or directory
x86_64-w64-mingw32-gcc.EXE: error: gtk+-3.0`: No such file or directory
x86_64-w64-mingw32-gcc.EXE: error: unrecognized command line option '--cflags'
x86_64-w64-mingw32-gcc.EXE: error: unrecognized command line option '--libs'
NMAKE : fatal error U1077: 'C:\msys64\mingw64\bin\x86_64-w64-mingw32-gcc.EXE' : return code '0x1'
Stop.

1 个答案:

答案 0 :(得分:0)

  

我想知道在编译时是否有任何方法可以将库包含在可执行文件中?

这意味着静态编译整个GTK +堆栈以生成静态库而不是共享库。我认为这是not really supported也不可取。

相反,如果您正在使用MSYS2(这是安装GTK + 3的首选方法),您可以为它创建一个包,然后安装该包及其依赖项(您自己的,以及GTK +)依赖关系)在特定的位置。安装的结果是您可以重新分发并且应该是独立的。

请阅读有关GTK+ application redistristribution on Windows的博客文章。它以gedit为例,拥有所有这些。