我需要将GNU / Linux(Arch Linux)中的GTK +应用程序交叉编译到Windows。我已经尝试使用mingw32
,但它没有看到所有库(包括c的标准库!)。所以,我需要:找到标准的库;找到所有其他(glib,gio,gtk等)库。但是有一个问题 - 我找不到它们。我也无法从Windows编译。我该怎么办?
答案 0 :(得分:6)
您可以找到适用于Windows on source forge或http://win32builder.gnome.org/的gtk 3的二进制文件。
解压缩后,您可以按照tutorial步骤进行操作:
1)安装编译工具链
安装适用于Windows的GCC编译器(即MinGW,Arch Linux doc of package):
#pacman -S migw-w64
直接从官方网站下载最新的一体化ZIP包存档(此处为直接link)
将GTK +调整到其位置:在终端中,移至" gtk3-win32"你刚创建的文件夹。例如:$cd /opt/gtk3-win32
然后做:
find -name '*.pc' | while read pc; do sed -e "s@^prefix=.*@prefix=$PWD@" -i "$pc"; done
2)编译
我们将告诉pkg-config
在我们的自定义路径中找到GTK + 3库。如果您解压缩到/opt/gtk3-win32
:
export PKG_CONFIG_PATH=/opt/gtk3-win32/lib/pkgconfig
我们准备编译一个示例C源代码!让我们使用这种风格的命令:
i586-mingw32msvc-gcc source.c -o executable.exe `pkg-config --cflags --libs gtk+-3.0
如果一切顺利,应该创建一个新的可执行文件。 它不会在我们的Linux系统上运行,因为它的目标是Windows!
3)发布
创建一个包含二进制文件和Windows .dll文件的文件夹。如果您解压缩到/opt/gtk3-win32
:
mkdir ~/distri
cp executable.exe ~/distri
cp /opt/gtk3-win32/bin/*.dll ~/distri
我们走吧!将此文件夹传输到Windows框。双击可执行文件并...
答案 1 :(得分:1)
以下说明适用于gcc 5.3.0(线程模型:posix)和gtk + 3.20.4
安装后,在msys2 shell中
pacman -S mingw-w64-i686-gtk3
cd /mingw32
tar cfz c:/temp/mingw32.tar.gz
对于gcc 5.3.0,编辑/etc/pacman.conf
[core]
Server = https://archive.archlinux.org/repos/2016/05/10/$repo/os/$arch
[extra]
Server = https://archive.archlinux.org/repos/2016/05/10/$repo/os/$arch
[community]
Server = https://archive.archlinux.org/repos/2016/05/10/$repo/os/$arch
升级时
pacman -Syu
如果降级
pacman -Syyuu
后来的Arch Linux版似乎有gcc 6.1.1可能与msys2 gcc不兼容。对于不会升级的Arch Linux安装(即没有安全更新),虚拟机可能是个好主意。
在Linux上解压缩 mingw32.tar.gz ,例如 / opt / mingw32
perl -pi.bak -e 's,^prefix=.*,prefix=/opt/mingw32,' /opt/mingw32/lib/pkgconfig/*.pc
例如,在执行配置脚本之前
export PKG_CONFIG_PATH=/opt/mingw32/lib/pkgconfig