静态编译基于GTK3的Go程序失败

问题描述 投票:0回答:1

我正在使用Go和Wails.App开发一个项目,这是一个基于Gtk3和libWebkit的Linux版本的GUI框架。

如果我以标准方式动态编译,该程序就可以工作。

但我只是想让它静态编译,使用 Musl 而不是 Glibc。 Musl 已成功安装在我的机器上。并且我安装了 libgtk-3-dev 和 libwebkit2gtk-4.0-dev

因此,正如我对标准 go 工具链所做的那样,我将一些 ldflags 传递给 wails 构建器:

$> CC=/usr/local/musl/bin/musl-gcc wails build --ldflags '-linkmode external -extldflags "-static"'

但是 go 工具链似乎无法获取链接库的路径:

Wails v1.7.0-pre1 - Building Application

✓ Skipped frontend dependencies (-f to force rebuild)
✓ Building frontend...
⣾ Ensuring Dependencies are up to date...# github.com/wailsapp/wails/lib/renderer/webview
/usr/bin/ld : cannot find -lwebkit2gtk-4.0
/usr/bin/ld : cannot find -lgtk-3
/usr/bin/ld : cannot find -lgdk-3
/usr/bin/ld : cannot find -lpangocairo-1.0
/usr/bin/ld : cannot find -lpango-1.0
/usr/bin/ld : cannot find -latk-1.0
/usr/bin/ld : cannot find -lcairo-gobject
/usr/bin/ld : cannot find -lcairo
/usr/bin/ld : cannot find -lgdk_pixbuf-2.0
/usr/bin/ld : cannot find -lsoup-2.4
/usr/bin/ld : cannot find -lgio-2.0
/usr/bin/ld : cannot find -ljavascriptcoregtk-4.0
/usr/bin/ld : cannot find -lgobject-2.0
/usr/bin/ld : cannot find -lglib-2.0
collect2: error: ld returned 1 exit status


✗ Ensuring Dependencies are up to date...
Error: exit status 2

也许有一些有用的信息

$> echo $LD_LIBRARY_PATH

(空)

$> ls /usr/local/lib 
cmake  gnucobol  libcob.a  libcob.la  libcob.so  libcob.so.4  libcob.so.4.0.0  libglfw3.a  libnanogui.so  libui.so  libui.so.0  nanogui.cpython-37m-x86_64-linux-gnu.so  pkgconfig  python2.7  python3.7  x86_64-linux-gnu
$> ls /usr/lib
accountsservice    dpkg                       initramfs-tools                       libgdal.so.20                   libmfhdfalt.so.0.0.0       libsidplay2.so.1.0.1  nodejs                software-properties
apparmor           ebtables                   inkscape                              libgdal.so.20.5.2               libmono-2.0.a              libspnav.so.0         nvidia                ssl
apt                eject                      ipxe                                  libgdiplus.so                   libmono-2.0.so             libspnav.so.0.1       ogdi                  sudo
aspell             emacsen-common             ispell                                libgdiplus.so.0                 libmono-btls-shared.so     libvirt               openssh               sysctl.d
at-spi2-core       encfs                      java-wrappers                         libgdiplus.so.0.0.0             libmono-llvm.a             libvpf.so.4           os-prober             syslinux
avahi              environment.d              kauth                                 libgimp-2.0.so.0                libmono-llvm.so            libvpf.so.4.1         os-probes             SYSLINUX
bfd-plugins        file                       kernel                                libgimp-2.0.so.0.1000.8         libmono-llvm.so.0          linux                 os-release            syslinux-legacy
binfmt.d           firefox                    klibc                                 libgimpbase-2.0.so.0            libmono-llvm.so.0.0.0      linux-boot-probes     osspd                 systemd
binfmt-support     firefox-addons             klibc-KzNL5rI0ooqhK-koTVzHy10DW4w.so  libgimpbase-2.0.so.0.1000.8     libmono-native.so          linux-sound-base      p7zip                 sysusers.d
blt2.5             firmware                   language-selector                     libgimpcolor-2.0.so.0           libmono-native.so.0        llvm-7                packagekit            tc
bluetooth          fwupd                      ld-linux.so.2                         libgimpcolor-2.0.so.0.1000.8    libmono-native.so.0.0.0    llvm-8                pcmciautils           tcl8.6
bolt               gcc                        ld-musl-x86_64.so.1                   libgimpconfig-2.0.so.0          libMonoPosixHelper.so      llvm-9                phantomjs             tcltk
bridge-utils       geoclue-2.0                libadplug-2.2.1.so.0                  libgimpconfig-2.0.so.0.1000.8   libmonosgen-2.0.a          locale                pkgconfig             terminfo
cantata            gettext                    libadplug-2.2.1.so.0.0.0              libgimpmath-2.0.so.0            libmonosgen-2.0.so         lp_solve              pkg-config.multiarch  tmpfiles.d
clang              ghostscript                libarmadillo.so.9                     libgimpmath-2.0.so.0.1000.8     libmonosgen-2.0.so.1       lsb                   pm-utils              ubiquity
cli                gimp                       libarmadillo.so.9.600.5               libgimpmodule-2.0.so.0          libmonosgen-2.0.so.1.0.0   man-db                policykit-1           ubuntu-advantage
cmake              girepository-1.0           libau.so                              libgimpmodule-2.0.so.0.1000.8   libMonoSupportW.so         mecab                 pppd                  ubuntu-release-upgrader
cnf-update-db      git-core                   libau.so.2                            libgimpthumb-2.0.so.0           libnetpbm.so.10            memtest86+            pulse-13.0            udev
colord             gnome-settings-daemon-3.0  libau.so.2.10                         libgimpthumb-2.0.so.0.1000.8    libnetpbm.so.10.0          mime                  python2.7             udisks2
command-not-found  gnupg                      libblosc.so.1                         libgimpui-2.0.so.0              libogdi.so.4               modprobe.d            python3               ufw
compat-ld          gnupg2                     libblosc.so.1.15.1                    libgimpui-2.0.so.0.1000.8       libogdi.so.4.1             modules               python3.7             unity-settings-daemon-1.0
console-setup      GNUstep                    libBLT.2.5.so.8.6                     libgimpwidgets-2.0.so.0         libOpenColorIO.so.1        modules-load.d        python3.8             upower
cpp                gold-ld                    libBLTlite.2.5.so.8.6                 libgimpwidgets-2.0.so.0.1000.8  libOpenColorIO.so.1.1.1    mono                  qemu                  valgrind
crda               groff                      libchm.so.1                           libgnustep-base.so.1.26         libprojectM.so.2           monodevelop           qt5                   virtualbox
cryptsetup         grub                       libchm.so.1.0.0                       libgnustep-base.so.1.26.0       libprojectM.so.2.1.0       monodoc               recovery-mode         wine
cups               grub-legacy                libdfalt.so.0                         libhardsid-builder.so.0         libpsm1                    mono-source-libs      rpm                   X11
dart               gtk-2.0                    libdfalt.so.0.0.0                     libhardsid-builder.so.0.0.1     libqmi                     mozilla               rsyslog               x86_64-linux-gnu
dbus-1.0           gvfs                       libepub.so.0                          libkolabxml.so.1                libreoffice                mysql                 ruby                  x86_64-linux-musl
dconf              hdparm                     libepub.so.0.2.1                      libkolabxml.so.1.1.6            libresid-builder.so.0      netplan               sasl2                 xorg
debug              i386-linux-gnu             libfreecell-solver.so.0               libmbim                         libresid-builder.so.0.0.1  networkd-dispatcher   sbcl                  xserver-xorg-video-intel
dkms               init                       libfreecell-solver.so.0.6.0           libmfhdfalt.so.0                libsidplay2.so.1           NetworkManager        snapd

$> pkg-config --cflags webkit2gtk-4.0                                 
-pthread -I/usr/include/webkitgtk-4.0 -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/libdrm -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/webkitgtk-4.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
go gtk3
1个回答
0
投票

作为GTK本身的替代方案,您可以尝试更新的(2024)

cznic/tk9.0
项目

它是一个无 CGo、跨平台的 Go GUI 工具包

package main

import _ "embed"
import . "modernc.org/tk9.0"

//go:embed gopher.png
var gopher []byte

func main() {
    Pack(Label(Image(NewPhoto(Data(gopher)))),
        TExit(),
        Padx("1m"), Pady("2m"), Ipadx("1m"), Ipady("1m"))
    App.Center().Wait()
}

这样,您就可以回避这些编译问题。

© www.soinside.com 2019 - 2024. All rights reserved.