Linking Gtk4 fails when compiling to windows

When compiling from Debian the program works as intended, while compiling using
zig build -Dtarget=x86_64-windows-gnu on debian or just zig build on windows gives me lld linker errors.

On windows I followed the official gtk4 installation guide using msys2. However while compiling i noticed some linking issues were easily fixed by changing the file endings of some library files from .dll.a to .a.

Can someone help me find a way to compile to windows.

Build.zig

    const std = @import("std");
    pub fn build(b: *std.Build) void {
        const target = b.standardTargetOptions(.{});
        const optimize = b.standardOptimizeOption(.{});

        const exe = b.addExecutable(.{
            .name = "src",
            .root_source_file = .{ .path = "src/main.zig" },
            .target = target,
            .optimize = optimize,
        });

        exe.linkSystemLibrary("c");
        exe.linkSystemLibrary("gtk4");

        b.installArtifact(exe);

        const run_cmd = b.addRunArtifact(exe);

        run_cmd.step.dependOn(b.getInstallStep());

        if (b.args) |args| {
            run_cmd.addArgs(args);
        }

        const run_step = b.step("run", "Run the app");
        run_step.dependOn(&run_cmd.step);
    }

error on debian 12 without any tweaks:

zig build -Dtarget=x86_64-windows-gnu
zig build-exe src Debug x86_64-windows-gnu: error: error: unable to find Dynamic system library 'gtk-4' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'pangocairo-1.0' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'pango-1.0' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'harfbuzz' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'gdk_pixbuf-2.0' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'cairo-gobject' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'cairo' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'graphene-1.0' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'gio-2.0' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'gobject-2.0' using strategy 'paths_first'. searched paths: none
error: unable to find Dynamic system library 'glib-2.0' using strategy 'paths_first'. searched paths: none

zig build-exe src Debug x86_64-windows-gnu: error: the following command exited with error code 1:
/home/user/Downloads/try random things/zig-linux-x86_64-0.12.0-dev.1769+bf5ab5451/zig build-exe /home/user/Downloads/try random things/zmt_old/src/main.zig -I/usr/include/gtk-4.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/graphene-1.0 -I/usr/lib/x86_64-linux-gnu/graphene-1.0/include -lgtk-4 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lc --cache-dir /home/user/Downloads/try random things/zmt_old/zig-cache --global-cache-dir /home/user/.cache/zig --name src -target x86_64-windows-gnu -mcpu x86_64 --listen=- 
Build Summary: 0/3 steps succeeded; 1 failed (disable with --summary none)
install transitive failure
└─ install src transitive failure
   └─ zig build-exe src Debug x86_64-windows-gnu failure
error: the following build command failed with exit code 1:
/home/user/Downloads/try random things/zmt_old/zig-cache/o/7b118b16cc63251b4b4ee0ee9f73ed13/build /home/user/Downloads/try random things/zig-linux-x86_64-0.12.0-dev.1769+bf5ab5451/zig /home/user/Downloads/try random things/zmt_old /home/user/Downloads/try random things/zmt_old/zig-cache /home/user/.cache/zig --seed 0x39560fec -Dtarget=x86_64-windows-gnu

error after changing library filenames from .dll.a to .a on windows:

zig build-exe src Debug native: error: the following command failed with 73 compilation errors:
C:\Users\user\Downloads\zig-windows-x86_64-0.12.0-dev.1482+e74ced21b\zig.exe build-exe C:\Users\user\Downloads\zmt-de2025202e9f6d3a7803ded3ad17088eeac90d6b\zmt\src\main.zig -IC:/msys64/
mingw64/bin/../include/gtk-4.0 -IC:/msys64/mingw64/bin/../include/pango-1.0 -IC:/msys64/mingw64/bin/../include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/bin/../include/cairo -IC:/msys64/mingw64/
bin/../include/harfbuzz -IC:/msys64/mingw64/bin/../include/freetype2 -IC:/msys64/mingw64/bin/../include/graphene-1.0 -IC:/msys64/mingw64/bin/../lib/graphene-1.0/include -IC:/msys64/mingw6
4/bin/../include -IC:/msys64/mingw64/bin/../include/glib-2.0 -IC:/msys64/mingw64/bin/../lib/glib-2.0/include -IC:/msys64/mingw64/bin/../include/fribidi -IC:/msys64/mingw64/bin/../include/
webp -DLIBDEFLATE_DLL -IC:/msys64/mingw64/bin/../include/libpng16 -IC:/msys64/mingw64/bin/../include/pixman-1 -LC:/msys64/mingw64/bin/../lib -lgtk-4 -lpangowin32-1.0 -lpangocairo-1.0 -lpa
ngo-1.0 -lharfbuzz -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -lc --cache-dir C:\Users\user\Downloads\zmt-de2025202e9f6d3a7803ded3a
d17088eeac90d6b\zmt\zig-cache --global-cache-dir C:\Users\user\AppData\Local\zig --name src --listen=-
Build Summary: 0/3 steps succeeded; 1 failed (disable with --summary none)
install transitive failure
└─ install src transitive failure
   └─ zig build-exe src Debug native 73 errors
error: lld-link: undefined symbol: glib_win32_init
    note: referenced by libgobject-2.0.a(gtype.c.obj):(.text.startup)
    note: referenced by libgio-2.0.a(giomodule.c.obj):(.text.startup)
error: lld-link: undefined symbol: ffi_prep_cif
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(g_cclosure_marshal_generic)
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(g_cclosure_marshal_generic_va)
error: lld-link: undefined symbol: ffi_call
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(g_cclosure_marshal_generic)
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(g_cclosure_marshal_generic_va)
error: lld-link: undefined symbol: ffi_type_void
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_void)
error: lld-link: undefined symbol: ffi_type_double
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_double)
error: lld-link: undefined symbol: ffi_type_float
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_float)
error: lld-link: undefined symbol: ffi_type_pointer
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_pointer)
error: lld-link: undefined symbol: ffi_type_sint64
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_sint64)
error: lld-link: undefined symbol: ffi_type_uint32
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_uint32)
error: lld-link: undefined symbol: ffi_type_uint64
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_uint64)
error: lld-link: undefined symbol: ffi_type_sint32
    note: referenced by libgobject-2.0.a(gclosure.c.obj):(.refptr.ffi_type_sint32)
error: lld-link: undefined symbol: __declspec(dllimport) CoTaskMemFree
    note: referenced by libgio-2.0.a(gwin32appinfo.c.obj):(make_item_array)
    note: referenced by libgio-2.0.a(gwin32file-sync-stream.c.obj):(_file_sync_stream_stat)
    note: referenced by libgio-2.0.a(gwin32mount.c.obj):(g_win32_mount_get_icon)
    note: referenced 4 more times
error: lld-link: undefined symbol: __declspec(dllimport) SHLoadIndirectString
    note: referenced by libgio-2.0.a(gwin32appinfo.c.obj):(grab_registry_string)
error: lld-link: undefined symbol: __declspec(dllimport) CoInitializeEx
    note: referenced by libgio-2.0.a(gwin32appinfo.c.obj):(g_win32_app_info_launch_internal)
    note: referenced by libgio-2.0.a(gwin32packageparser.c.obj):(g_win32_package_parser_enum_packages)
error: lld-link: undefined symbol: __declspec(dllimport) CoCreateInstance
    note: referenced by libgio-2.0.a(gwin32appinfo.c.obj):(g_win32_app_info_launch_internal)
error: lld-link: undefined symbol: __declspec(dllimport) CoUninitialize
    note: referenced by libgio-2.0.a(gwin32appinfo.c.obj):(g_win32_app_info_launch_internal)
    note: referenced by libgio-2.0.a(gwin32packageparser.c.obj):(g_win32_package_parser_enum_packages)
error: lld-link: undefined symbol: g_module_close
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_unload_module)
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_load_module)
error: lld-link: undefined symbol: g_module_open_full
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_load_module)
error: lld-link: undefined symbol: g_module_symbol
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_load_module)
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_load_module)
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_load_module)
    note: referenced 1 more times
error: lld-link: undefined symbol: g_module_error
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_module_load_module)
error: lld-link: undefined symbol: g_module_supported
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_modules_load_all_in_directory_with_scope)
    note: referenced by libgio-2.0.a(giomodule.c.obj):(g_io_modules_scan_all_in_directory_with_scope)
error: lld-link: undefined symbol: inflate
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_convert)
error: lld-link: undefined symbol: inflateEnd
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_finalize)
error: lld-link: undefined symbol: inflateGetHeader
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_set_gzheader.part.0)
error: lld-link: undefined symbol: inflateReset
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_reset)
error: lld-link: undefined symbol: inflateInit_
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_constructed)
error: lld-link: undefined symbol: inflateInit2_
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_constructed)
    note: referenced by libgio-2.0.a(gzlibdecompressor.c.obj):(g_zlib_decompressor_constructed)
error: lld-link: undefined symbol: CancelMibChangeNotify2
    note: referenced by libgio-2.0.a(gwin32networkmonitor.c.obj):(g_win32_network_monitor_finalize)
error: lld-link: undefined symbol: GetIpForwardTable2
    note: referenced by libgio-2.0.a(gwin32networkmonitor.c.obj):(g_win32_network_monitor_initable_init)
error: lld-link: undefined symbol: NotifyRouteChange2
    note: referenced by libgio-2.0.a(gwin32networkmonitor.c.obj):(g_win32_network_monitor_initable_init)
error: lld-link: undefined symbol: __declspec(dllimport) inet_pton
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_w32_get_adapter_ipv4_addr)
    note: referenced by libgio-2.0.a(ginetaddress.c.obj):(g_inet_address_new_from_string)
error: lld-link: undefined symbol: __declspec(dllimport) recv
    note: referenced by libgio-2.0.a(gsocket.c.obj):(update_condition_unlocked)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_get_available_bytes)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_receive_with_timeout)
error: lld-link: undefined symbol: __declspec(dllimport) WSAEnumNetworkEvents
    note: referenced by libgio-2.0.a(gsocket.c.obj):(update_condition_unlocked)
error: lld-link: undefined symbol: __declspec(dllimport) WSAGetLastError
    note: referenced by libgio-2.0.a(gsocket.c.obj):(update_condition_unlocked)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(socket_set_nonblock)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_multicast_group_operation)
    note: referenced 22 more times
error: lld-link: undefined symbol: __declspec(dllimport) WSAEventSelect
    note: referenced by libgio-2.0.a(gsocket.c.obj):(update_select_events.part.0)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_accept)
error: lld-link: undefined symbol: __declspec(dllimport) WSACreateEvent
    note: referenced by libgio-2.0.a(gsocket.c.obj):(update_select_events.part.0)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_create_source)
error: lld-link: undefined symbol: __declspec(dllimport) ioctlsocket
    note: referenced by libgio-2.0.a(gsocket.c.obj):(socket_set_nonblock)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_get_available_bytes)
error: lld-link: undefined symbol: __declspec(dllimport) setsockopt
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_multicast_group_operation)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_multicast_group_operation)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_multicast_group_operation_ssm)
    note: referenced 2 more times
error: lld-link: undefined symbol: __declspec(dllimport) socket
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket)
error: lld-link: undefined symbol: __declspec(dllimport) WSAIoctl
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_get_credentials)
error: lld-link: undefined symbol: __declspec(dllimport) getsockname
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_get_local_address)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_constructed)
error: lld-link: undefined symbol: __declspec(dllimport) listen
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_listen)
error: lld-link: undefined symbol: __declspec(dllimport) shutdown
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_shutdown)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_shutdown)
error: lld-link: undefined symbol: __declspec(dllimport) closesocket
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_close)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_accept)
error: lld-link: undefined symbol: __declspec(dllimport) WSACloseEvent
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_finalize)
error: lld-link: undefined symbol: __declspec(dllimport) WSAWaitForMultipleEvents
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_condition_timed_wait)
error: lld-link: undefined symbol: __declspec(dllimport) WSARecvFrom
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_receive_message_with_timeout)
error: lld-link: undefined symbol: __declspec(dllimport) WSARecv
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_receive_message_with_timeout)
error: lld-link: undefined symbol: __declspec(dllimport) send
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_send_with_timeout)
error: lld-link: undefined symbol: __declspec(dllimport) accept
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_accept)
error: lld-link: undefined symbol: __declspec(dllimport) WSASendTo
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_send_message_with_timeout)
error: lld-link: undefined symbol: __declspec(dllimport) WSASend
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_send_message_with_timeout)
error: lld-link: undefined symbol: __declspec(dllimport) getsockopt
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_get_option)
error: lld-link: undefined symbol: __declspec(dllimport) getpeername
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_constructed)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_get_remote_address)
error: lld-link: undefined symbol: __declspec(dllimport) connect
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_connect)
error: lld-link: undefined symbol: __declspec(dllimport) bind
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_bind)
error: lld-link: undefined symbol: if_nametoindex
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_w32_get_adapter_ipv4_addr)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_multicast_group_operation)
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_multicast_group_operation_ssm)
error: lld-link: undefined symbol: GetAdaptersAddresses
    note: referenced by libgio-2.0.a(gsocket.c.obj):(g_socket_w32_get_adapter_ipv4_addr)
error: lld-link: undefined symbol: __declspec(dllimport) CoTaskMemAlloc
    note: referenced by libgio-2.0.a(gwin32file-sync-stream.c.obj):(_file_sync_stream_stat)
error: lld-link: undefined symbol: libiconv_open
    note: referenced by libintl.a(dcigettext.o):(_libintl_find_msg)
    note: referenced by libintl.a(dcigettext.o):(_libintl_find_msg)
error: lld-link: undefined symbol: libiconv
    note: referenced by libintl.a(dcigettext.o):(_libintl_find_msg)
error: lld-link: undefined symbol: __declspec(dllimport) StrRetToStrW
    note: referenced by libgio-2.0.a(gwin32mount.c.obj):(get_mount_display_name)
error: lld-link: undefined symbol: __declspec(dllimport) inet_ntop
    note: referenced by libgio-2.0.a(ginetaddress.c.obj):(g_inet_address_to_string)
    note: referenced by libgio-2.0.a(ginetaddress.c.obj):(g_inet_address_to_string)
error: lld-link: undefined symbol: in6addr_any
    note: referenced by libgio-2.0.a(ginetaddress.c.obj):(.refptr.in6addr_any)
error: lld-link: undefined symbol: in6addr_loopback
    note: referenced by libgio-2.0.a(ginetaddress.c.obj):(.refptr.in6addr_loopback)
error: lld-link: undefined symbol: WspiapiGetAddrInfo
    note: referenced by libgio-2.0.a(ginetsocketaddress.c.obj):(g_inet_socket_address_new_from_string)
    note: referenced by libgio-2.0.a(gthreadedresolver.c.obj):(threaded_resolver_worker_cb)
error: lld-link: undefined symbol: WspiapiFreeAddrInfo
    note: referenced by libgio-2.0.a(ginetsocketaddress.c.obj):(g_inet_socket_address_new_from_string)
    note: referenced by libgio-2.0.a(gthreadedresolver.c.obj):(threaded_resolver_worker_cb)
    note: referenced by libgio-2.0.a(gthreadedresolver.c.obj):(threaded_resolver_worker_cb)
error: lld-link: undefined symbol: __declspec(dllimport) WSAStartup
    note: referenced by libgio-2.0.a(gnetworking.c.obj):(.text)
error: lld-link: undefined symbol: __declspec(dllimport) getservbyname
    note: referenced by libgio-2.0.a(gnetworking.c.obj):(g_getservbyname_ntohs)
error: lld-link: undefined symbol: WspiapiGetNameInfo
    note: referenced by libgio-2.0.a(gthreadedresolver.c.obj):(do_lookup_by_address.constprop.0)
error: lld-link: undefined symbol: DnsQuery_A
    note: referenced by libgio-2.0.a(gthreadedresolver.c.obj):(threaded_resolver_worker_cb)
error: lld-link: undefined symbol: DnsFree
    note: referenced by libgio-2.0.a(gthreadedresolver.c.obj):(threaded_resolver_worker_cb)
error: lld-link: undefined symbol: libiconv_set_relocation_prefix
    note: referenced by libintl.a(relocatable.o):(.text)

main.zig:

    const std = @import("std");

    const c = @cImport({
        @cInclude("gtk/gtk.h");
    });

    // reimplementation of c.g_signal_connect
    pub fn _g_signal_connect(instance: c.gpointer, detailed_signal: [*c]const c.gchar, c_handler: c.GCallback, data: c.gpointer) c.gulong {
        var zero: u32 = 0;
        const flags: *c.GConnectFlags = @as(*c.GConnectFlags, @ptrCast(&zero));
        return c.g_signal_connect_data(instance, detailed_signal, c_handler, data, null, flags.*);
    }

    pub fn _g_signal_connect_swapped(instance: c.gpointer, detailed_signal: [*c]const c.gchar, c_handler: c.GCallback, data: c.gpointer) c.gulong {
        return c.g_signal_connect_data(
            instance,
            detailed_signal,
            c_handler,
            data,
            null,
            c.G_CONNECT_SWAPPED,
        );
    }

    pub fn buttonHandler(text: [*c]const u8, windowName: [*c]const u8, callBack: c.GCallback) !void {
        c.g_print(text);
        const window = c.gtk_application_new(windowName, c.G_APPLICATION_FLAGS_NONE);
        defer c.g_object_unref(window);

        // using reimplementation
        _ = _g_signal_connect(window, "activate", callBack, null);

        const windowStatus: c_int = c.g_application_run(@as(*c.GApplication, @ptrCast(window)), 0, null);
        if (windowStatus != 0) return error.Error;
    }

    // pq button handler
    pub fn loadPq(_: *c.GtkWidget, _: c.gpointer) !void {
        try buttonHandler("Hello PQ", "main.pq", @as(c.GCallback, @ptrCast(&activatePq)));
    }

    // pq button handler
    pub fn loadLinjar(_: *c.GtkWidget, _: c.gpointer) !void {
        try buttonHandler("Hello Linjar", "main.linjar", @as(c.GCallback, @ptrCast(&activateLinjar)));
    }

    // pq button handler
    pub fn loadHeron(_: *c.GtkWidget, _: c.gpointer) !void {
        try buttonHandler("Hello Heron", "main.heron", @as(c.GCallback, @ptrCast(&activateHeron)));
    }

    // pq button handler
    pub fn loadPyth(_: *c.GtkWidget, _: c.gpointer) !void {
        try buttonHandler("Hello Pythagoras", "main.pyth", @as(c.GCallback, @ptrCast(&activatePyth)));
    }

    // pq button handler
    pub fn loadDisk(_: *c.GtkWidget, _: c.gpointer) !void {
        try buttonHandler("Hello Diskriminant", "main.disk", @as(c.GCallback, @ptrCast(&activateDisk)));
    }

    // calculate pq button handler
    pub fn calcPq(widget: *c.GtkWidget, data: c.gpointer) !void {
        _ = widget;
        _ = data;

        c.g_print("calculated PQ\n");
    }

    pub fn initButton(buttonLabel: [*c]const u8, callBack: c.GCallback) *c.GtkWidget {
        // using reimplementations
        const button: *c.GtkWidget = c.gtk_button_new_with_label(buttonLabel);
        _ = _g_signal_connect(button, "clicked", callBack, null);

        return button;
    }

    // initialize menu window
    pub fn activateMenu(app: *c.GtkApplication, _: c.gpointer) void {

        // init window constants: width height and context
        const window: *c.GtkWidget = c.gtk_application_window_new(app);
        c.gtk_window_set_title(@as(*c.GtkWindow, @ptrCast(window)), "Menu");
        c.gtk_window_set_default_size(@as(*c.GtkWindow, @ptrCast(window)), 400, 200);

        // init box context
        const box: *c.GtkWidget = c.gtk_box_new(c.GTK_ORIENTATION_VERTICAL, 0);
        c.gtk_widget_set_halign(box, c.GTK_ALIGN_CENTER);
        c.gtk_widget_set_valign(box, c.GTK_ALIGN_CENTER);

        c.gtk_window_set_child(@as(*c.GtkWindow, @ptrCast(window)), box);

        // init pqButton
        const pqButton = initButton("Kalkulera PQ", @as(c.GCallback, @ptrCast(&loadPq)));

        // init linjarButton
        const linjarButton = initButton("Kalkulera Linjar Ekvation", @as(c.GCallback, @ptrCast(&loadLinjar)));

        // init heronButton
        const heronButton = initButton("Kalkulera Herons Formel", @as(c.GCallback, @ptrCast(&loadHeron)));

        // init pythButton
        const pythButton = initButton("Kalkulera Pythagoras Sats", @as(c.GCallback, @ptrCast(&loadPyth)));

        // init diskButton
        const diskButton = initButton("Kalkulera Diskriminanten", @as(c.GCallback, @ptrCast(&loadDisk)));

        // add buttons do window context
        c.gtk_box_append(@as(*c.GtkBox, @ptrCast(box)), pqButton);
        c.gtk_box_append(@as(*c.GtkBox, @ptrCast(box)), linjarButton);
        c.gtk_box_append(@as(*c.GtkBox, @ptrCast(box)), heronButton);
        c.gtk_box_append(@as(*c.GtkBox, @ptrCast(box)), pythButton);
        c.gtk_box_append(@as(*c.GtkBox, @ptrCast(box)), diskButton);

        // display buttons
        c.gtk_widget_show(window);
    }

    pub fn windowInit(app: *c.GtkApplication, title: [*c]const u8, buttonLabel: [*c]const u8, callBack: c.GCallback) void {
        const window: *c.GtkWidget = c.gtk_application_window_new(app);
        c.gtk_window_set_title(@as(*c.GtkWindow, @ptrCast(window)), title);
        c.gtk_window_set_default_size(@as(*c.GtkWindow, @ptrCast(window)), 200, 200);

        const box: *c.GtkWidget = c.gtk_box_new(c.GTK_ORIENTATION_VERTICAL, 0);
        c.gtk_widget_set_halign(box, c.GTK_ALIGN_CENTER);
        c.gtk_widget_set_valign(box, c.GTK_ALIGN_CENTER);

        c.gtk_window_set_child(@as(*c.GtkWindow, @ptrCast(window)), box);

        const button: *c.GtkWidget = c.gtk_button_new_with_label(buttonLabel);
        // using reimplementations
        _ = _g_signal_connect(button, "clicked", callBack, null);

        c.gtk_box_append(@as(*c.GtkBox, @ptrCast(box)), button);

        c.gtk_widget_show(window);
    }

    // initialize pq window
    pub fn activatePq(app: *c.GtkApplication, _: c.gpointer) void {
        windowInit(app, "Pq", "Pq Formel", @as(c.GCallback, @ptrCast(&calcPq)));
    }

    // initialize linjar window
    pub fn activateLinjar(app: *c.GtkApplication, _: c.gpointer) void {
        windowInit(app, "Linjar", "Hello Linjar!", @as(c.GCallback, @ptrCast(&calcPq)));
    }

    // initialize heron window
    pub fn activateHeron(app: *c.GtkApplication, _: c.gpointer) void {
        windowInit(app, "Heron", "Hello Heron!", @as(c.GCallback, @ptrCast(&calcPq)));
    }

    // initialize pythagoras window
    pub fn activatePyth(app: *c.GtkApplication, _: c.gpointer) void {
        windowInit(app, "Pythagoras", "Hello Pythagoras!", @as(c.GCallback, @ptrCast(&calcPq)));
    }

    // initialize discriminant window
    pub fn activateDisk(app: *c.GtkApplication, _: c.gpointer) void {
        windowInit(app, "Diskriminant", "Hello Diskriminant!", @as(c.GCallback, @ptrCast(&calcPq)));
    }

    pub fn main() !void {
        const menu = c.gtk_application_new("main.menu", c.G_APPLICATION_FLAGS_NONE);
        defer c.g_object_unref(menu);

        // using reimplementation
        _ = _g_signal_connect(menu, "activate", @as(c.GCallback, @ptrCast(&activateMenu)), null);

        const menuStatus: c_int = c.g_application_run(@as(*c.GApplication, @ptrCast(menu)), 0, null);
        if (menuStatus != 0) return error.Error;
    }

This might fix missing path

if (step.target.isLinux()) {
    const triple = try step.target.linuxTriple(b.allocator);
    step.addLibraryPath(.{ .path = b.fmt("/usr/lib/{s}", .{triple}) });
}

issue filed at: zig native paths should include `/usr/lib/{linux triple}` by default on Linux · Issue #16733 · ziglang/zig · GitHub