我正在为一个flutter开发的应用编写pkgbuild。但是运行时提示动态库中找不到符号。
[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'libvodozemac_bindings_dart.so': /opt/nebuchadnezzar/lib/libvodozemac_bindings_dart.so: undefined symbol: Dart_CurrentIsolate_DL
如果在源码下使用fvm flutter run -d linux运行(使用同一个版本的flutter),则不会提示。
pkgbuild的内容是:
# Maintainer: Dee.H.Y <dongfengweixiao at hotmail dot com>
# This PKGBUILD tracks the latest development version of nebuchadnezzar.
# Before executing makepkg, you can set FVM_CACHE_PATH to $HOME/fvm or the path specified by the cachePath field in the $HOME/.config/fvm/.fvmrc file.
## options
: ${_install_path:=opt}
_pkgname="nebuchadnezzar"
pkgname="$_pkgname-git"
pkgver=r156.5794abd
pkgrel=1
pkgdesc="Matrix Client written in Dart & Flutter for Linux"
url="https://github.com/ubuntu-flutter-community/nebuchadnezzar"
license=('AGPL-3.0-or-later')
arch=('x86_64' 'aarch64')
depends=(
glibc
glib2
mpv
cairo
gdk-pixbuf2
pango
libepoxy
fontconfig
at-spi2-core
gtk3
gcc-libs
alsa-lib
libnotify
)
makedepends=(
'clang'
'cmake'
'fvm' #AUR
'git'
'lld'
'llvm'
'ninja'
'patchelf'
'rustup'
)
options=('!lto')
provides=("${_pkgname}")
conflicts=("${_pkgname}")
source=(
"$_pkgname"::"git+$url.git"
"0001-Use-dynamic-OpenSSL.patch"
)
sha256sums=(
'SKIP'
'd5dd1fc8e65dc81fc2f1292ea93d8843c45922e2b988679126b55f171d083882'
)
pkgver() {
cd "$srcdir/$_pkgname"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
cd "$srcdir/$_pkgname"
patch -p1 -i "$srcdir/0001-Use-dynamic-OpenSSL-and-export-symbols.patch"
}
build() {
export FVM_CACHE_PATH="$SRCDEST/fvm-cache"
cd "$srcdir/$_pkgname"
fvm install
fvm use -f
fvm flutter --disable-analytics
fvm flutter --no-version-check pub get
fvm flutter clean && fvm flutter build linux --release
}
package() {
if [ $CARCH == "aarch64" ]; then
FLUTTER_ARCH=arm64
else
FLUTTER_ARCH=x64
fi
cd "$srcdir/$_pkgname/build/linux/$FLUTTER_ARCH/release/bundle"
install -Dm755 "$_pkgname" "$pkgdir/$_install_path/$_pkgname/$_pkgname"
cp --reflink=auto -r lib/ "$pkgdir/$_install_path/$_pkgname/"
cp --reflink=auto -r data/ "$pkgdir/$_install_path/$_pkgname/"
# runpath
patchelf --set-rpath '$ORIGIN/lib' "$pkgdir/$_install_path/$_pkgname/$_pkgname"
for i in "$pkgdir/$_install_path/$_pkgname/lib"/*.so; do
[ -z "$(patchelf --print-rpath "$i")" ] && continue
patchelf --set-rpath '$ORIGIN' "$i"
done
# symlink
install -dm755 "${pkgdir}/usr/bin"
ln -sfr "$pkgdir/$_install_path/$_pkgname/$_pkgname" "$pkgdir/usr/bin/${_pkgname}"
# icon
install -Dm644 "$srcdir/$_pkgname/snap/gui/$_pkgname.png" \
"$pkgdir/usr/share/pixmaps/$_pkgname.png"
# .desktop file
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/$_pkgname.desktop" << END
[Desktop Entry]
Type=Application
Name=Nebuchadnezzar
Comment=$pkgdesc
Exec=$_pkgname %U
Icon=$_pkgname
Terminal=false
Categories=Network;InstantMessaging;Chat;
StartupWMClass=nebuchadnezzar
END
# license
install -Dm644 "$srcdir/$_pkgname/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname/"
# permissions
chmod -R u+rwX,go+rX,go-w "$pkgdir/"
}
补丁是:
From e84f94dcdafe22c80055ddea9d46084c8f7f2aed Mon Sep 17 00:00:00 2001
From: Dee HY <dongfengweixiao@hotmail.com>
Date: Sat, 14 Mar 2026 18:56:11 +0800
Subject: [PATCH] Use dynamic OpenSSL
---
linux/CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt
index b28f54a..2b5ead6 100644
--- a/linux/CMakeLists.txt
+++ b/linux/CMakeLists.txt
@@ -71,6 +71,9 @@ set_target_properties(${BINARY_NAME}
)
+# Use dynamic OpenSSL linking for sqlcipher_flutter_libs
+set(OPENSSL_USE_STATIC_LIBS OFF)
+
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include(flutter/generated_plugins.cmake)
--
2.53.0
libtree /opt/nebuchadnezzar/nebuchadnezzar
/opt/nebuchadnezzar/nebuchadnezzar
├── libdesktop_webview_window_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ │ ├── libpthread.so.0 [default path]
│ │ ├── libfontconfig.so.1 [default path]
│ │ │ ├── libfreetype.so.6 [default path]
│ │ │ │ ├── libz.so.1 [default path]
│ │ │ │ ├── libbrotlidec.so.1 [default path]
│ │ │ │ │ └── libbrotlicommon.so.1 [default path]
│ │ │ │ ├── libpng16.so.16 [default path]
│ │ │ │ │ └── libz.so.1 [default path]
│ │ │ │ └── libbz2.so.1.0 [default path]
│ │ │ └── libexpat.so.1 [default path]
│ │ ├── libepoxy.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ │ └── libpcre2-8.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ └── libffi.so.8 [default path]
│ │ ├── libgio-2.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libmount.so.1 [default path]
│ │ │ │ └── libblkid.so.1 [default path]
│ │ │ ├── libz.so.1 [default path]
│ │ │ ├── libgmodule-2.0.so.0 [default path]
│ │ │ │ └── libglib-2.0.so.0 [default path]
│ │ │ └── libgobject-2.0.so.0 [default path]
│ │ ├── libcairo.so.2 [default path]
│ │ │ ├── libpixman-1.so.0 [default path]
│ │ │ ├── libxcb-shm.so.0 [default path]
│ │ │ │ └── libxcb.so.1 [default path]
│ │ │ │ ├── libXau.so.6 [default path]
│ │ │ │ └── libXdmcp.so.6 [default path]
│ │ │ ├── libxcb-render.so.0 [default path]
│ │ │ │ └── libxcb.so.1 [default path]
│ │ │ ├── libxcb.so.1 [default path]
│ │ │ ├── libXrender.so.1 [default path]
│ │ │ │ └── libX11.so.6 [default path]
│ │ │ │ └── libxcb.so.1 [default path]
│ │ │ ├── libXext.so.6 [default path]
│ │ │ │ └── libX11.so.6 [default path]
│ │ │ ├── libX11.so.6 [default path]
│ │ │ ├── libfreetype.so.6 [default path]
│ │ │ ├── libfontconfig.so.1 [default path]
│ │ │ ├── libpng16.so.16 [default path]
│ │ │ └── libz.so.1 [default path]
│ │ ├── libatk-1.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ └── libgobject-2.0.so.0 [default path]
│ │ ├── libpango-1.0.so.0 [default path]
│ │ │ ├── libharfbuzz.so.0 [default path]
│ │ │ │ ├── libgraphite2.so.3 [default path]
│ │ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ │ └── libfreetype.so.6 [default path]
│ │ │ ├── libthai.so.0 [default path]
│ │ │ │ └── libdatrie.so.1 [default path]
│ │ │ ├── libfribidi.so.0 [default path]
│ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libglib-2.0.so.0 [default path]
│ │ ├── libpangocairo-1.0.so.0 [default path]
│ │ │ ├── libpango-1.0.so.0 [default path]
│ │ │ ├── libfontconfig.so.1 [default path]
│ │ │ ├── libharfbuzz.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libcairo.so.2 [default path]
│ │ │ └── libpangoft2-1.0.so.0 [default path]
│ │ │ ├── libpango-1.0.so.0 [default path]
│ │ │ ├── libfreetype.so.6 [default path]
│ │ │ ├── libfontconfig.so.1 [default path]
│ │ │ ├── libharfbuzz.so.0 [default path]
│ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libglib-2.0.so.0 [default path]
│ │ ├── libgdk-3.so.0 [default path]
│ │ │ ├── libXinerama.so.1 [default path]
│ │ │ │ ├── libXext.so.6 [default path]
│ │ │ │ └── libX11.so.6 [default path]
│ │ │ ├── libXrandr.so.2 [default path]
│ │ │ │ ├── libXext.so.6 [default path]
│ │ │ │ ├── libX11.so.6 [default path]
│ │ │ │ └── libXrender.so.1 [default path]
│ │ │ ├── libXcomposite.so.1 [default path]
│ │ │ │ └── libX11.so.6 [default path]
│ │ │ ├── libXfixes.so.3 [default path]
│ │ │ │ └── libX11.so.6 [default path]
│ │ │ ├── libXdamage.so.1 [default path]
│ │ │ │ └── libX11.so.6 [default path]
│ │ │ ├── libXcursor.so.1 [default path]
│ │ │ │ ├── libXrender.so.1 [default path]
│ │ │ │ ├── libX11.so.6 [default path]
│ │ │ │ └── libXfixes.so.3 [default path]
│ │ │ ├── libXext.so.6 [default path]
│ │ │ ├── libXi.so.6 [default path]
│ │ │ │ ├── libX11.so.6 [default path]
│ │ │ │ └── libXext.so.6 [default path]
│ │ │ ├── libX11.so.6 [default path]
│ │ │ ├── libwayland-egl.so.1 [default path]
│ │ │ ├── libwayland-cursor.so.0 [default path]
│ │ │ │ └── libwayland-client.so.0 [default path]
│ │ │ │ └── libffi.so.8 [default path]
│ │ │ ├── libwayland-client.so.0 [default path]
│ │ │ ├── libxkbcommon.so.0 [default path]
│ │ │ ├── libpangocairo-1.0.so.0 [default path]
│ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ ├── libfontconfig.so.1 [default path]
│ │ │ ├── libepoxy.so.0 [default path]
│ │ │ ├── libcairo-gobject.so.2 [default path]
│ │ │ │ ├── libcairo.so.2 [default path]
│ │ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ │ └── libglib-2.0.so.0 [default path]
│ │ │ ├── libfribidi.so.0 [default path]
│ │ │ ├── libpango-1.0.so.0 [default path]
│ │ │ ├── libcairo.so.2 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libgdk_pixbuf-2.0.so.0 [default path]
│ │ │ ├── libglycin-2.so.0 [default path]
│ │ │ │ ├── liblcms2.so.2 [default path]
│ │ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ │ ├── libseccomp.so.2 [default path]
│ │ │ │ └── libfontconfig.so.1 [default path]
│ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ ├── libgmodule-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libglib-2.0.so.0 [default path]
│ │ └── libgtk-3.so.0 [default path]
│ │ ├── libgdk-3.so.0 [default path]
│ │ ├── libtinysparql-3.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libxml2.so.16 [default path]
│ │ │ │ ├── libicuuc.so.78 [default path]
│ │ │ │ │ └── libicudata.so.78 [default path]
│ │ │ │ └── libz.so.1 [default path]
│ │ │ ├── libjson-glib-1.0.so.0 [default path]
│ │ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ │ └── libgobject-2.0.so.0 [default path]
│ │ │ ├── libgmodule-2.0.so.0 [default path]
│ │ │ ├── libsqlite3.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libgio-2.0.so.0 [default path]
│ │ ├── libcloudproviders.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libgio-2.0.so.0 [default path]
│ │ ├── libatk-bridge-2.0.so.0 [default path]
│ │ │ ├── libatspi.so.0 [default path]
│ │ │ │ ├── libdbus-1.so.3 [default path]
│ │ │ │ │ └── libsystemd.so.0 [default path]
│ │ │ │ ├── libXi.so.6 [default path]
│ │ │ │ ├── libX11.so.6 [default path]
│ │ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ │ └── libgobject-2.0.so.0 [default path]
│ │ │ ├── libgio-2.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ ├── libdbus-1.so.3 [default path]
│ │ │ └── libatk-1.0.so.0 [default path]
│ │ ├── libX11.so.6 [default path]
│ │ ├── libXi.so.6 [default path]
│ │ ├── libXfixes.so.3 [default path]
│ │ ├── libepoxy.so.0 [default path]
│ │ ├── libatk-1.0.so.0 [default path]
│ │ ├── libgdk_pixbuf-2.0.so.0 [default path]
│ │ ├── libcairo-gobject.so.2 [default path]
│ │ ├── libfribidi.so.0 [default path]
│ │ ├── libfontconfig.so.1 [default path]
│ │ ├── libpangoft2-1.0.so.0 [default path]
│ │ ├── libharfbuzz.so.0 [default path]
│ │ ├── libcairo.so.2 [default path]
│ │ ├── libpango-1.0.so.0 [default path]
│ │ ├── libpangocairo-1.0.so.0 [default path]
│ │ ├── libgio-2.0.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ └── libgmodule-2.0.so.0 [default path]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libjavascriptcoregtk-4.1.so.0 [default path]
│ │ ├── libatomic.so.1 [default path]
│ │ ├── libsystemd.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libgio-2.0.so.0 [default path]
│ │ ├── libicuuc.so.78 [default path]
│ │ ├── libicui18n.so.78 [default path]
│ │ │ └── libicuuc.so.78 [default path]
│ │ └── libglib-2.0.so.0 [default path]
│ ├── libgtk-3.so.0 [default path]
│ └── libwebkit2gtk-4.1.so.0 [default path]
│ ├── libepoxy.so.0 [default path]
│ ├── libgbm.so.1 [default path]
│ │ ├── libdrm.so.2 [default path]
│ │ └── libexpat.so.1 [default path]
│ ├── libseccomp.so.2 [default path]
│ ├── libmanette-0.2.so.0 [default path]
│ │ ├── libgio-2.0.so.0 [default path]
│ │ ├── libgudev-1.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libudev.so.1 [default path]
│ │ │ └── libgobject-2.0.so.0 [default path]
│ │ ├── libevdev.so.2 [default path]
│ │ ├── libhidapi-hidraw.so.0 [default path]
│ │ │ └── libudev.so.1 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ └── libgobject-2.0.so.0 [default path]
│ ├── libdrm.so.2 [default path]
│ ├── libwayland-client.so.0 [default path]
│ ├── libwayland-server.so.0 [default path]
│ │ └── libffi.so.8 [default path]
│ ├── libX11.so.6 [default path]
│ ├── libhyphen.so.0 [default path]
│ ├── libtasn1.so.6 [default path]
│ ├── libsecret-1.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libtss2-tctildr.so.0 [default path]
│ │ ├── libtss2-rc.so.0 [default path]
│ │ ├── libtss2-mu.so.0 [default path]
│ │ ├── libtss2-esys.so.0 [default path]
│ │ │ ├── libcrypto.so.3 [default path]
│ │ │ ├── libtss2-mu.so.0 [default path]
│ │ │ └── libtss2-sys.so.1 [default path]
│ │ │ └── libtss2-mu.so.0 [default path]
│ │ ├── libgcrypt.so.20 [default path]
│ │ │ └── libgpg-error.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ └── libgio-2.0.so.0 [default path]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgmodule-2.0.so.0 [default path]
│ ├── libgio-2.0.so.0 [default path]
│ ├── libenchant-2.so.2 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ └── libgmodule-2.0.so.0 [default path]
│ ├── libharfbuzz-icu.so.0 [default path]
│ │ ├── libharfbuzz.so.0 [default path]
│ │ └── libicuuc.so.78 [default path]
│ ├── libsoup-3.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libnghttp2.so.14 [default path]
│ │ ├── libz.so.1 [default path]
│ │ ├── libgssapi_krb5.so.2 [default path]
│ │ │ ├── libkrb5.so.3 [default path]
│ │ │ │ ├── libk5crypto.so.3 [default path]
│ │ │ │ │ ├── libkrb5support.so.0 [default path]
│ │ │ │ │ │ ├── libkeyutils.so.1 [default path]
│ │ │ │ │ │ └── libresolv.so.2 [default path]
│ │ │ │ │ ├── libresolv.so.2 [default path]
│ │ │ │ │ └── libkeyutils.so.1 [default path]
│ │ │ │ ├── libresolv.so.2 [default path]
│ │ │ │ ├── libkeyutils.so.1 [default path]
│ │ │ │ ├── libkrb5support.so.0 [default path]
│ │ │ │ └── libcom_err.so.2 [default path]
│ │ │ ├── libresolv.so.2 [default path]
│ │ │ ├── libkeyutils.so.1 [default path]
│ │ │ ├── libkrb5support.so.0 [default path]
│ │ │ ├── libcom_err.so.2 [default path]
│ │ │ └── libk5crypto.so.3 [default path]
│ │ ├── libbrotlidec.so.1 [default path]
│ │ ├── libpsl.so.5 [default path]
│ │ │ ├── libunistring.so.5 [default path]
│ │ │ └── libidn2.so.0 [default path]
│ │ │ └── libunistring.so.5 [default path]
│ │ ├── libsqlite3.so.0 [default path]
│ │ ├── libgio-2.0.so.0 [default path]
│ │ └── libgobject-2.0.so.0 [default path]
│ ├── libavif.so.16 [default path]
│ │ ├── libyuv.so [default path]
│ │ │ └── libjpeg.so.8 [default path]
│ │ ├── libaom.so.3 [default path]
│ │ ├── libSvtAv1Enc.so.4 [default path]
│ │ ├── librav1e.so.0.8 [default path]
│ │ ├── libdav1d.so.7 [default path]
│ │ └── libsharpyuv.so.0 [default path]
│ ├── libjxl.so.0.11 [default path]
│ │ ├── libjxl_cms.so.0.11 [default path]
│ │ │ └── libhwy.so.1 [default path]
│ │ ├── libbrotlienc.so.1 [default path]
│ │ │ └── libbrotlicommon.so.1 [default path]
│ │ ├── libbrotlidec.so.1 [default path]
│ │ └── libhwy.so.1 [default path]
│ ├── libwebp.so.7 [default path]
│ │ └── libsharpyuv.so.0 [default path]
│ ├── libwebpdemux.so.2 [default path]
│ │ └── libwebp.so.7 [default path]
│ ├── libgstfft-1.0.so.0 [default path]
│ │ └── libglib-2.0.so.0 [default path]
│ ├── libgstgl-1.0.so.0 [default path]
│ │ ├── libgstbase-1.0.so.0 [default path]
│ │ │ ├── libgstreamer-1.0.so.0 [default path]
│ │ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ │ ├── libunwind.so.8 [default path]
│ │ │ │ │ └── liblzma.so.5 [default path]
│ │ │ │ ├── libdw.so.1 [default path]
│ │ │ │ │ ├── libelf.so.1 [default path]
│ │ │ │ │ │ ├── libz.so.1 [default path]
│ │ │ │ │ │ └── libzstd.so.1 [default path]
│ │ │ │ │ ├── libbz2.so.1.0 [default path]
│ │ │ │ │ ├── liblzma.so.5 [default path]
│ │ │ │ │ ├── libzstd.so.1 [default path]
│ │ │ │ │ └── libz.so.1 [default path]
│ │ │ │ ├── libgmodule-2.0.so.0 [default path]
│ │ │ │ └── libglib-2.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ └── libglib-2.0.so.0 [default path]
│ │ ├── libgbm.so.1 [default path]
│ │ ├── libdrm.so.2 [default path]
│ │ ├── libgudev-1.0.so.0 [default path]
│ │ ├── libxcb.so.1 [default path]
│ │ ├── libX11-xcb.so.1 [default path]
│ │ ├── libX11.so.6 [default path]
│ │ ├── libwayland-egl.so.1 [default path]
│ │ ├── libwayland-cursor.so.0 [default path]
│ │ ├── libwayland-client.so.0 [default path]
│ │ ├── libGLX.so.0 [default path]
│ │ │ ├── libGLdispatch.so.0 [default path]
│ │ │ └── libX11.so.6 [default path]
│ │ ├── libEGL.so.1 [default path]
│ │ │ └── libGLdispatch.so.0 [default path]
│ │ ├── libgmodule-2.0.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libgstallocators-1.0.so.0 [default path]
│ │ │ ├── libgstreamer-1.0.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ └── libdrm.so.2 [default path]
│ │ ├── libgstvideo-1.0.so.0 [default path]
│ │ │ ├── libgstallocators-1.0.so.0 [default path]
│ │ │ ├── liborc-0.4.so.0 [default path]
│ │ │ ├── libgobject-2.0.so.0 [default path]
│ │ │ ├── libglib-2.0.so.0 [default path]
│ │ │ ├── libgstbase-1.0.so.0 [default path]
│ │ │ └── libgstreamer-1.0.so.0 [default path]
│ │ └── libgstreamer-1.0.so.0 [default path]
│ ├── libgstvideo-1.0.so.0 [default path]
│ ├── libgsttag-1.0.so.0 [default path]
│ │ ├── libgstbase-1.0.so.0 [default path]
│ │ ├── libz.so.1 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ └── libgstreamer-1.0.so.0 [default path]
│ ├── libgstaudio-1.0.so.0 [default path]
│ │ ├── libgstbase-1.0.so.0 [default path]
│ │ ├── liborc-0.4.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libgsttag-1.0.so.0 [default path]
│ │ └── libgstreamer-1.0.so.0 [default path]
│ ├── libgstpbutils-1.0.so.0 [default path]
│ │ ├── libgstvideo-1.0.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libgsttag-1.0.so.0 [default path]
│ │ ├── libgstaudio-1.0.so.0 [default path]
│ │ ├── libgstbase-1.0.so.0 [default path]
│ │ └── libgstreamer-1.0.so.0 [default path]
│ ├── libgstreamer-1.0.so.0 [default path]
│ ├── libgstbase-1.0.so.0 [default path]
│ ├── libgstapp-1.0.so.0 [default path]
│ │ ├── libgstbase-1.0.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ └── libgstreamer-1.0.so.0 [default path]
│ ├── libgstallocators-1.0.so.0 [default path]
│ ├── libgcrypt.so.20 [default path]
│ ├── libwoff2dec.so.1.0.2 [default path]
│ │ ├── libwoff2common.so.1.0.2 [default path]
│ │ └── libbrotlidec.so.1 [default path]
│ ├── liblcms2.so.2 [default path]
│ ├── libxslt.so.1 [default path]
│ │ └── libxml2.so.16 [default path]
│ ├── libsqlite3.so.0 [default path]
│ ├── libxml2.so.16 [default path]
│ ├── libcairo.so.2 [default path]
│ ├── libatk-1.0.so.0 [default path]
│ ├── libpango-1.0.so.0 [default path]
│ ├── libz.so.1 [default path]
│ ├── libgdk-3.so.0 [default path]
│ ├── libgtk-3.so.0 [default path]
│ ├── libicuuc.so.78 [default path]
│ ├── libpng16.so.16 [default path]
│ ├── libjpeg.so.8 [default path]
│ ├── libharfbuzz.so.0 [default path]
│ ├── libsystemd.so.0 [default path]
│ ├── libicui18n.so.78 [default path]
│ ├── libjavascriptcoregtk-4.1.so.0 [default path]
│ ├── libexpat.so.1 [default path]
│ ├── libwebpmux.so.3 [default path]
│ │ └── libwebp.so.7 [default path]
│ ├── libfontconfig.so.1 [default path]
│ └── libfreetype.so.6 [default path]
├── libdynamic_color_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libemoji_picker_flutter_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ └── libgobject-2.0.so.0 [default path]
├── libfile_selector_linux_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libflutter_secure_storage_linux_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libsecret-1.so.0 [default path]
├── libgtk_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgio-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libflutter_linux_gtk.so [runpath]
├── libyaru_window_linux_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgdk-3.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libxdg_icons_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgio-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libwindow_to_front_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libwindow_manager_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgdk-3.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── liburl_launcher_linux_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgio-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libsystem_theme_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libgtk-3.so.0 [default path]
├── libsuper_native_extensions_plugin.so [runpath]
│ ├── /opt/nebuchadnezzar/lib/libsuper_native_extensions.so [runpath]
│ │ ├── libgtk-3.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libcairo.so.2 [default path]
│ │ └── libgdk-3.so.0 [default path]
│ ├── libglib-2.0.so.0 [default path]
│ └── libgobject-2.0.so.0 [default path]
├── libsqlcipher_flutter_libs_plugin.so [runpath]
│ └── libcrypto.so.3 [default path]
├── libscreen_retriever_linux_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libgdk-3.so.0 [default path]
├── librecord_linux_plugin.so [runpath]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libglib-2.0.so.0 [default path]
├── libopen_folder_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ └── libgobject-2.0.so.0 [default path]
├── libmedia_kit_video_plugin.so [runpath]
│ ├── libmpv.so.2 [runpath]
│ │ ├── libva-wayland.so.2 [default path]
│ │ │ ├── libva.so.2 [default path]
│ │ │ ├── libwayland-client.so.0 [default path]
│ │ │ └── libdrm.so.2 [default path]
│ │ ├── libEGL.so.1 [default path]
│ │ ├── libXv.so.1 [default path]
│ │ │ ├── libX11.so.6 [default path]
│ │ │ └── libXext.so.6 [default path]
│ │ ├── libXrandr.so.2 [default path]
│ │ ├── libXext.so.6 [default path]
│ │ ├── libXss.so.1 [default path]
│ │ │ ├── libXext.so.6 [default path]
│ │ │ └── libX11.so.6 [default path]
│ │ ├── libxkbcommon.so.0 [default path]
│ │ ├── libwayland-cursor.so.0 [default path]
│ │ ├── libwayland-client.so.0 [default path]
│ │ ├── libgbm.so.1 [default path]
│ │ ├── libpulse.so.0 [default path]
│ │ │ ├── libpulsecommon-17.0.so [runpath]
│ │ │ │ ├── libasyncns.so.0 [default path]
│ │ │ │ ├── libsystemd.so.0 [default path]
│ │ │ │ ├── libxcb.so.1 [default path]
│ │ │ │ ├── libdbus-1.so.3 [default path]
│ │ │ │ └── libsndfile.so.1 [default path]
│ │ │ │ ├── libvorbis.so.0 [default path]
│ │ │ │ │ └── libogg.so.0 [default path]
│ │ │ │ ├── libmp3lame.so.0 [default path]
│ │ │ │ │ └── libmpg123.so.0 [default path]
│ │ │ │ ├── libmpg123.so.0 [default path]
│ │ │ │ ├── libopus.so.0 [default path]
│ │ │ │ ├── libFLAC.so.14 [default path]
│ │ │ │ │ └── libogg.so.0 [default path]
│ │ │ │ ├── libvorbisenc.so.2 [default path]
│ │ │ │ │ └── libvorbis.so.0 [default path]
│ │ │ │ └── libogg.so.0 [default path]
│ │ │ └── libdbus-1.so.3 [default path]
│ │ ├── libXfixes.so.3 [default path]
│ │ ├── libxcb.so.1 [default path]
│ │ ├── libasound.so.2 [default path]
│ │ ├── libarchive.so.13 [default path]
│ │ │ ├── libcrypto.so.3 [default path]
│ │ │ ├── libxml2.so.16 [default path]
│ │ │ ├── liblzma.so.5 [default path]
│ │ │ ├── libz.so.1 [default path]
│ │ │ ├── libbz2.so.1.0 [default path]
│ │ │ ├── liblz4.so.1 [default path]
│ │ │ ├── libzstd.so.1 [default path]
│ │ │ └── libacl.so.1 [default path]
│ │ ├── liblcms2.so.2 [default path]
│ │ ├── libunwind.so.8 [default path]
│ │ ├── libgnutls.so.30 [default path]
│ │ │ ├── libleancrypto.so.1 [default path]
│ │ │ ├── libgmp.so.10 [default path]
│ │ │ ├── libnettle.so.8 [default path]
│ │ │ ├── libhogweed.so.6 [default path]
│ │ │ │ ├── libnettle.so.8 [default path]
│ │ │ │ └── libgmp.so.10 [default path]
│ │ │ ├── libtasn1.so.6 [default path]
│ │ │ ├── libunistring.so.5 [default path]
│ │ │ ├── libidn2.so.0 [default path]
│ │ │ └── libp11-kit.so.0 [default path]
│ │ │ └── libffi.so.8 [default path]
│ │ ├── libX11.so.6 [default path]
│ │ ├── libva.so.2 [default path]
│ │ ├── libdrm.so.2 [default path]
│ │ ├── libvdpau.so.1 [default path]
│ │ │ ├── libX11.so.6 [default path]
│ │ │ └── libXext.so.6 [default path]
│ │ ├── libva-x11.so.2 [default path]
│ │ │ ├── libva.so.2 [default path]
│ │ │ ├── libxcb-dri3.so.0 [default path]
│ │ │ │ └── libxcb.so.1 [default path]
│ │ │ ├── libxcb.so.1 [default path]
│ │ │ ├── libX11-xcb.so.1 [default path]
│ │ │ ├── libXfixes.so.3 [default path]
│ │ │ ├── libXext.so.6 [default path]
│ │ │ ├── libX11.so.6 [default path]
│ │ │ └── libdrm.so.2 [default path]
│ │ ├── libva-drm.so.2 [default path]
│ │ │ ├── libva.so.2 [default path]
│ │ │ └── libdrm.so.2 [default path]
│ │ ├── libz.so.1 [default path]
│ │ ├── liblzma.so.5 [default path]
│ │ ├── libfreetype.so.6 [default path]
│ │ ├── libfribidi.so.0 [default path]
│ │ ├── libharfbuzz.so.0 [default path]
│ │ ├── libfontconfig.so.1 [default path]
│ │ └── libwayland-egl.so.1 [default path]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libepoxy.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ ├── libgdk-3.so.0 [default path]
│ ├── libgtk-3.so.0 [default path]
│ └── libglib-2.0.so.0 [default path]
├── libmedia_kit_libs_linux_plugin.so [runpath]
├── liblocal_notifier_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgobject-2.0.so.0 [default path]
│ └── libnotify.so.4 [default path]
│ ├── libgdk_pixbuf-2.0.so.0 [default path]
│ ├── libgio-2.0.so.0 [default path]
│ ├── libglib-2.0.so.0 [default path]
│ └── libgobject-2.0.so.0 [default path]
├── libirondash_engine_context_plugin.so [runpath]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ └── libgobject-2.0.so.0 [default path]
├── libhandy_window_plugin.so [runpath]
│ ├── libhandy_flutter.so [runpath]
│ │ ├── libgtk-3.so.0 [default path]
│ │ ├── libglib-2.0.so.0 [default path]
│ │ ├── libgobject-2.0.so.0 [default path]
│ │ ├── libgio-2.0.so.0 [default path]
│ │ ├── libcairo.so.2 [default path]
│ │ ├── libpango-1.0.so.0 [default path]
│ │ ├── libatk-1.0.so.0 [default path]
│ │ ├── libgdk_pixbuf-2.0.so.0 [default path]
│ │ └── libgdk-3.so.0 [default path]
│ ├── libflutter_linux_gtk.so [runpath]
│ ├── libglib-2.0.so.0 [default path]
│ ├── libgio-2.0.so.0 [default path]
│ ├── libgdk-3.so.0 [default path]
│ ├── libgtk-3.so.0 [default path]
│ └── libgobject-2.0.so.0 [default path]
├── libglib-2.0.so.0 [default path]
├── libgtk-3.so.0 [default path]
├── libgdk-3.so.0 [default path]
├── libgio-2.0.so.0 [default path]
└── libgobject-2.0.so.0 [default path]
09君
(梁栋烨)
3
问题太长了,懒得看了。我把你的问题拿去给DeepSeek跑了一下,输出结果如下:
根据你提供的错误信息和PKGBUILD内容,问题出现在 libvodozemac_bindings_dart.so 动态库中找不到 Dart_CurrentIsolate_DL 符号。这是一个典型的Flutter/Dart插件链接问题。
问题分析
Dart_CurrentIsolate_DL 是Dart VM的API符号,通常由Flutter引擎提供。问题可能出现在:
- Flutter引擎版本不匹配:构建时使用的Flutter引擎版本与运行时环境不匹配
- 符号导出问题:Flutter引擎的符号没有被正确导出或链接
- Rust FFI绑定问题:
vodozemac_bindings_dart 是一个Rust库,可能链接了错误的Dart API
解决方案
方案1:检查Flutter引擎链接
修改PKGBUILD的build部分,确保正确链接Flutter引擎:
build() {
export FVM_CACHE_PATH="$SRCDEST/fvm-cache"
# 设置Flutter环境变量
export FLUTTER_ROOT="$FVM_CACHE_PATH/versions/$(cat .fvm/flutter_sdk_version)"
export DART_SDK="$FLUTTER_ROOT/bin/cache/dart-sdk"
cd "$srcdir/$_pkgname"
fvm install
fvm use -f
# 清理并重新构建
fvm flutter --disable-analytics clean
fvm flutter --no-version-check pub get
# 添加详细构建输出
fvm flutter build linux --release --verbose
# 检查符号
echo "Checking symbols in libvodozemac_bindings_dart.so..."
readelf -Ws build/linux/x64/release/bundle/lib/libvodozemac_bindings_dart.so | grep Dart
ldd build/linux/x64/release/bundle/lib/libvodozemac_bindings_dart.so
}
方案2:添加缺失的依赖
在depends数组中添加Flutter/Dart运行时依赖:
depends=(
glibc
glib2
mpv
cairo
gdk-pixbuf2
pango
libepoxy
fontconfig
at-spi2-core
gtk3
gcc-libs
alsa-lib
libnotify
# 添加以下依赖
'dart' # 从AUR安装
'flutter-engine' # 可能需要从AUR安装
)
方案3:修复符号链接问题
在package()函数中添加符号检查和处理:
package() {
# ... 现有代码 ...
# 检查并修复libvodozemac_bindings_dart.so
VODOZEMAC_SO="$pkgdir/$_install_path/$_pkgname/lib/libvodozemac_bindings_dart.so"
if [ -f "$VODOZEMAC_SO" ]; then
echo "Checking $VODOZEMAC_SO for missing symbols..."
# 检查缺失的符号
if ! nm -D "$VODOZEMAC_SO" | grep -q "Dart_CurrentIsolate_DL"; then
echo "Warning: Dart_CurrentIsolate_DL symbol not found in $VODOZEMAC_SO"
# 尝试从Flutter引擎链接
FLUTTER_ENGINE_SO="$srcdir/$_pkgname/build/linux/x64/release/bundle/lib/libflutter_linux_gtk.so"
if [ -f "$FLUTTER_ENGINE_SO" ]; then
echo "Checking Flutter engine for symbol..."
nm -D "$FLUTTER_ENGINE_SO" | grep Dart_CurrentIsolate_DL
fi
fi
# 确保正确的rpath
patchelf --set-rpath '$ORIGIN:$ORIGIN/../lib' "$VODOZEMAC_SO"
fi
# ... 其余代码 ...
}
方案4:修改构建配置
创建一个新的补丁文件来修复构建配置:
0002-Fix-dart-symbols.patch:
From: Your Name <your.email@example.com>
Date: $(date +%Y-%m-%d)
Subject: Fix Dart symbol linking for vodozemac
---
vodozemac/bindings/dart/CMakeLists.txt | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/vodozemac/bindings/dart/CMakeLists.txt b/vodozemac/bindings/dart/CMakeLists.txt
index xxxxxxx..xxxxxxx 100644
--- a/vodozemac/bindings/dart/CMakeLists.txt
+++ b/vodozemac/bindings/dart/CMakeLists.txt
@@ -1,5 +1,13 @@
cmake_minimum_required(VERSION 3.10)
project(vodozemac_bindings_dart)
+# 添加Dart SDK路径
+find_package(Dart REQUIRED)
+include_directories(${DART_INCLUDE_DIRS})
+
+# 显式链接Dart库
+find_library(DART_LIB dart)
+target_link_libraries(vodozemac_bindings_dart ${DART_LIB})
+
# 现有的构建规则...
方案5:使用系统Flutter(替代FVM)
如果问题持续,尝试使用系统Flutter而不是FVM:
makedepends=(
'clang'
'cmake'
'flutter' # 从AUR安装系统Flutter
'git'
'lld'
'llvm'
'ninja'
'patchelf'
'rustup'
)
build() {
# 使用系统Flutter
export PATH="/opt/flutter/bin:$PATH"
cd "$srcdir/$_pkgname"
flutter clean
flutter pub get
flutter build linux --release --verbose
}
调试步骤
-
检查符号:
nm -D /opt/nebuchadnezzar/lib/libvodozemac_bindings_dart.so | grep Dart
-
查看动态依赖:
ldd /opt/nebuchadnezzar/lib/libvodozemac_bindings_dart.so
-
检查Flutter引擎:
nm -D /opt/nebuchadnezzar/lib/libflutter_linux_gtk.so | grep Dart_CurrentIsolate_DL
-
临时解决方案:
如果符号确实在Flutter引擎中,尝试:
patchelf --add-needed libflutter_linux_gtk.so /opt/nebuchadnezzar/lib/libvodozemac_bindings_dart.so
推荐方案
从你的libtree输出看,libflutter_linux_gtk.so 已经正确加载。问题可能是Rust绑定时链接了错误的Dart SDK版本。
最可能有效的解决方案:
- 使用方案1中的详细构建检查
- 确保FVM使用的Flutter版本与系统兼容
- 在构建后运行
patchelf确保所有.so文件都有正确的rpath
如果问题仍然存在,请检查项目的vodozemac子模块配置,可能需要更新Rust绑定或调整FFI声明。