LINUX.ORG.RU

История изменений

Исправление yars068, (текущая версия) :

Кажется, скросс-скомпилировал :) Итак:

  1. Устанавливаем необходимые пакеты:
sudo pacman -Syu aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers
  1. Забираем нужный исходник: pkgctl repo clone --protocol=https lzlib

  2. Делаем makepkg -so;

  3. Насыпаем сверху патчик (имя файла патча должно быть как в изменённом PKGBUILD’е):

--- a/lzlib-1.15/configure	2025-01-09 02:22:51.000000000 +0300
+++ b/lzlib-1.15/configure	2025-07-07 21:18:04.210642166 +0300
@@ -30,8 +30,8 @@
 infodir='$(datarootdir)/info'
 libdir='$(exec_prefix)/lib'
 mandir='$(datarootdir)/man'
-CC=gcc
-AR=ar
+CC=${CC:-gcc}
+AR=${AR:-ar}
 CPPFLAGS=
 CFLAGS='-Wall -W -O2'
 LDFLAGS=


  1. Модифицируем PKGBUILD:
--- lzlib/PKGBUILD	2025-07-07 22:15:58.451086247 +0300
+++ lzlib-arm/PKGBUILD	2025-07-07 22:08:41.084673025 +0300
@@ -6,23 +6,43 @@
 pkgver=1.15
 pkgrel=1
 pkgdesc="A library providing in-memory LZMA compression and decompression functions"
-arch=('x86_64')
+arch=('x86_64' 'aarch64')
 url="http://www.nongnu.org/lzip/lzlib.html"
 license=('BSD-2-Clause')
 depends=('glibc')
-source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig})
+source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig}
+        allow_redefine_CC_AR.patch)
+
 sha256sums=('4afab907a46d5a7d14e927a1080c3f4d7e3ca5a0f9aea81747d8fed0292377ff'
-            'SKIP')
+            'SKIP'
+            '6d907d121374d7d5e08280de70818c4b4cb60febe051868a2365edf4fe52fd43')
+
 validpgpkeys=('1D41C14B272A2219A739FA4F8FE99503132D7742') # Antonio Diaz Diaz
 
+prepare() {
+  if [ "x$arch" == "xaarch64" ] ; then 
+    echo "Setting up the environment to cross-compile"
+    export CC=aarch64-linux-gnu-gcc
+    export CXX=aarch64-linux-gnu-g++
+    export AR=aarch64-linux-gnu-ar
+    export RANLIB=aarch64-linux-gnu-ranlib
+  fi
+  tar xf $pkgname-$pkgver.tar.gz
+  cd $pkgname-$pkgver
+  patch -p2 --verbose -i $srcdir/allow_redefine_CC_AR.patch
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure \
     --prefix=/usr \
+    --disable-ldconfig \
     --enable-shared \
     CFLAGS="$CFLAGS" \
     LDFLAGS="$LDFLAGS"
+
   make
+  make minilzip
 }
 
 check() {
  1. Делаем updpkgsums && makepkg --printsrcinfo > .SRCINFO

  2. Делаем cat /etc/makepkg.conf > makepkg.conf. В файл надо внести следующие изменения:

@@ -35,14 +35,14 @@
 # ARCHITECTURE, COMPILE FLAGS
 #########################################################################
 #
-CARCH="x86_64"
+CARCH="aarch64"
 CHOST="x86_64-pc-linux-gnu"
 
 #-- Compiler and Linker Flags
 #CPPFLAGS=""
-CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+CFLAGS="-march=armv9-a -mtune=cortex-a76 -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-        -fstack-clash-protection -fcf-protection \
+        -fstack-clash-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
 CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \

Обрати внимание на ключи -march, -mtune. Я не знаю, какой именно проц/SoC у тебя, так что поправь при необходимости. Известные gcc архитектуры и флаги компилятора можно подсмотреть в этом документике.

  1. И, наконец, пробуем собрать: makepkg arch=aarch64 --nocheck --config makepkg.conf -fC.

Мне пришлось собирать с --nocheck, потому что пакет

pacman -Ql aarch64-linux-gnu-glibc | grep ld-linux
aarch64-linux-gnu-glibc /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1

– почему-то у меня протухший, а QEMU слинкован уже со свежим, хотя я перед процессом обхода нецелованных граблей обновился. И вот тут, вероятно, будут следующие грабли. Я предупредил :)

Естественно, если собирать прямо на целевой тачке, телодвижений должно быть куда поменьше :) Вот что у меня получилось:

pacman -Qlp /tmp/lzlib-1.15-1-aarch64.pkg.tar.zst 
lzlib /usr/
lzlib /usr/bin/
lzlib /usr/bin/minilzip
lzlib /usr/include/
lzlib /usr/include/lzlib.h
lzlib /usr/lib/
lzlib /usr/lib/liblz.a
lzlib /usr/lib/liblz.so
lzlib /usr/lib/liblz.so.1
lzlib /usr/lib/liblz.so.1.15
lzlib /usr/share/
lzlib /usr/share/info/
lzlib /usr/share/info/dir
lzlib /usr/share/info/lzlib.info
lzlib /usr/share/licenses/
lzlib /usr/share/licenses/lzlib/
lzlib /usr/share/licenses/lzlib/COPYING
lzlib /usr/share/man/
lzlib /usr/share/man/man1/
lzlib /usr/share/man/man1/minilzip.1

Пакет какое-то время должен лежат тута.

UPD. Если кто-нибудь ещё подскажет, почему это make на x86_64 отрабатывает как положено, собирает пакет полностью, а при кросс-компиляции не собирается minilzip, но при этом он собирается отдельным вызвом make, будет супер.

Исправление yars068, :

Кажется, скросс-скомпилировал :) Итак:

  1. Устанавливаем необходимые пакеты:
sudo pacman -Syu aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers
  1. Забираем нужный исходник: pkgctl repo clone --protocol=https lzlib

  2. Делаем makepkg -so;

  3. Насыпаем сверху патчик (имя файла патча должно быть как в изменённом PKGBUILD’е):

--- a/lzlib-1.15/configure	2025-01-09 02:22:51.000000000 +0300
+++ b/lzlib-1.15/configure	2025-07-07 21:18:04.210642166 +0300
@@ -30,8 +30,8 @@
 infodir='$(datarootdir)/info'
 libdir='$(exec_prefix)/lib'
 mandir='$(datarootdir)/man'
-CC=gcc
-AR=ar
+CC=${CC:-gcc}
+AR=${AR:-ar}
 CPPFLAGS=
 CFLAGS='-Wall -W -O2'
 LDFLAGS=


  1. Модифицируем PKGBUILD:
--- lzlib/PKGBUILD	2025-07-07 22:15:58.451086247 +0300
+++ lzlib-arm/PKGBUILD	2025-07-07 22:08:41.084673025 +0300
@@ -6,23 +6,43 @@
 pkgver=1.15
 pkgrel=1
 pkgdesc="A library providing in-memory LZMA compression and decompression functions"
-arch=('x86_64')
+arch=('x86_64' 'aarch64')
 url="http://www.nongnu.org/lzip/lzlib.html"
 license=('BSD-2-Clause')
 depends=('glibc')
-source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig})
+source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig}
+        allow_redefine_CC_AR.patch)
+
 sha256sums=('4afab907a46d5a7d14e927a1080c3f4d7e3ca5a0f9aea81747d8fed0292377ff'
-            'SKIP')
+            'SKIP'
+            '6d907d121374d7d5e08280de70818c4b4cb60febe051868a2365edf4fe52fd43')
+
 validpgpkeys=('1D41C14B272A2219A739FA4F8FE99503132D7742') # Antonio Diaz Diaz
 
+prepare() {
+  if [ "x$arch" == "xaarch64" ] ; then 
+    echo "Setting up the environment to cross-compile"
+    export CC=aarch64-linux-gnu-gcc
+    export CXX=aarch64-linux-gnu-g++
+    export AR=aarch64-linux-gnu-ar
+    export RANLIB=aarch64-linux-gnu-ranlib
+  fi
+  tar xf $pkgname-$pkgver.tar.gz
+  cd $pkgname-$pkgver
+  patch -p2 --verbose -i $srcdir/allow_redefine_CC_AR.patch
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure \
     --prefix=/usr \
+    --disable-ldconfig \
     --enable-shared \
     CFLAGS="$CFLAGS" \
     LDFLAGS="$LDFLAGS"
+
   make
+  make minilzip
 }
 
 check() {
  1. Делаем updpkgsums && makepkg --printsrcinfo > .SRCINFO

  2. Делаем cat /etc/makepkg.conf > makepkg.conf. В файл надо внести следующие изменения:

@@ -35,14 +35,14 @@
 # ARCHITECTURE, COMPILE FLAGS
 #########################################################################
 #
-CARCH="x86_64"
+CARCH="aarch64"
 CHOST="x86_64-pc-linux-gnu"
 
 #-- Compiler and Linker Flags
 #CPPFLAGS=""
-CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+CFLAGS="-march=armv9-a -mtune=cortex-a76 -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-        -fstack-clash-protection -fcf-protection \
+        -fstack-clash-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
 CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \

Обрати внимание на ключи -march, -mtune. Я не знаю, какой именно проц/SoC у тебя, так что поправь при необходимости. Известные gcc архитектуры и флаги компилятора можно подсмотреть в этом документике.

  1. И, наконец, пробуем собрать: makepkg arch=aarch64 --nocheck --config makepkg.conf -fC.

Мне пришлось собирать с --nocheck, потому что пакет

pacman -Ql aarch64-linux-gnu-glibc | grep ld-linux
aarch64-linux-gnu-glibc /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1

– почему-то у меня протухший, а QEMU слинкован уже со свежим, хотя я перед процессом обхода нецелованных граблей обновился. И вот тут, вероятно, будут следующие грабли. Я предупредил :)

Естественно, если собирать прямо на целевой тачке, телодвижений должно быть куда поменьше :) Вот что у меня получилось:

pacman -Qlp /tmp/lzlib-1.15-1-aarch64.pkg.tar.zst 
lzlib /usr/
lzlib /usr/bin/
lzlib /usr/bin/minilzip
lzlib /usr/include/
lzlib /usr/include/lzlib.h
lzlib /usr/lib/
lzlib /usr/lib/liblz.a
lzlib /usr/lib/liblz.so
lzlib /usr/lib/liblz.so.1
lzlib /usr/lib/liblz.so.1.15
lzlib /usr/share/
lzlib /usr/share/info/
lzlib /usr/share/info/dir
lzlib /usr/share/info/lzlib.info
lzlib /usr/share/licenses/
lzlib /usr/share/licenses/lzlib/
lzlib /usr/share/licenses/lzlib/COPYING
lzlib /usr/share/man/
lzlib /usr/share/man/man1/
lzlib /usr/share/man/man1/minilzip.1

Пакет какое-то время должен лежат тута.

Исправление yars068, :

Кажется, скросс-скомпилировал :) Итак:

  1. Устанавливаем необходимые пакеты:
sudo pacman -Syu aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers
  1. Забираем нужный исходник: pkgctl repo clone --protocol=https lzlib

  2. Делаем makepkg -so;

  3. Насыпаем сверху патчик (имя файла патча должно быть как в изменённом PKGBUILD’е):

--- a/lzlib-1.15/configure	2025-01-09 02:22:51.000000000 +0300
+++ b/lzlib-1.15/configure	2025-07-07 21:18:04.210642166 +0300
@@ -30,8 +30,8 @@
 infodir='$(datarootdir)/info'
 libdir='$(exec_prefix)/lib'
 mandir='$(datarootdir)/man'
-CC=gcc
-AR=ar
+CC=${CC:-gcc}
+AR=${AR:-ar}
 CPPFLAGS=
 CFLAGS='-Wall -W -O2'
 LDFLAGS=


  1. Модифицируем PKGBUILD:
--- lzlib/PKGBUILD	2025-07-07 22:15:58.451086247 +0300
+++ lzlib-arm/PKGBUILD	2025-07-07 22:08:41.084673025 +0300
@@ -6,23 +6,43 @@
 pkgver=1.15
 pkgrel=1
 pkgdesc="A library providing in-memory LZMA compression and decompression functions"
-arch=('x86_64')
+arch=('x86_64' 'aarch64')
 url="http://www.nongnu.org/lzip/lzlib.html"
 license=('BSD-2-Clause')
 depends=('glibc')
-source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig})
+source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig}
+        allow_redefine_CC_AR.patch)
+
 sha256sums=('4afab907a46d5a7d14e927a1080c3f4d7e3ca5a0f9aea81747d8fed0292377ff'
-            'SKIP')
+            'SKIP'
+            '6d907d121374d7d5e08280de70818c4b4cb60febe051868a2365edf4fe52fd43')
+
 validpgpkeys=('1D41C14B272A2219A739FA4F8FE99503132D7742') # Antonio Diaz Diaz
 
+prepare() {
+  if [ "x$arch" == "xaarch64" ] ; then 
+    echo "Setting up the environment to cross-compile"
+    export CC=aarch64-linux-gnu-gcc
+    export CXX=aarch64-linux-gnu-g++
+    export AR=aarch64-linux-gnu-ar
+    export RANLIB=aarch64-linux-gnu-ranlib
+  fi
+  tar xf $pkgname-$pkgver.tar.gz
+  cd $pkgname-$pkgver
+  patch -p2 --verbose -i $srcdir/allow_redefine_CC_AR.patch
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure \
     --prefix=/usr \
+    --disable-ldconfig \
     --enable-shared \
     CFLAGS="$CFLAGS" \
     LDFLAGS="$LDFLAGS"
+
   make
+  make minilzip
 }
 
 check() {
  1. Делаем updpkgsums && makepkg --printsrcinfo > .SRCINFO

  2. Делаем cat /etc/makepkg.conf > makepkg.conf. В файл надо внести следующие изменения:

@@ -35,14 +35,14 @@
 # ARCHITECTURE, COMPILE FLAGS
 #########################################################################
 #
-CARCH="x86_64"
+CARCH="aarch64"
 CHOST="x86_64-pc-linux-gnu"
 
 #-- Compiler and Linker Flags
 #CPPFLAGS=""
-CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+CFLAGS="-march=armv9-a -mtune=cortex-a76 -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-        -fstack-clash-protection -fcf-protection \
+        -fstack-clash-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
 CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \

Обрати внимание на ключи -march, -mtune. Я не знаю, какой именно проц/SoC у тебя, так что поправь при необходимости. Известные gcc архитектуры и флаги компилятора можно подсмотреть в этом документике.

  1. И, наконец, пробуем собрать: makepkg arch=aarch64 --nocheck --config makepkg.conf -fC.

Мне пришлось собирать с --nocheck, потому что пакет

pacman -Ql aarch64-linux-gnu-glibc | grep ld-linux
aarch64-linux-gnu-glibc /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1

– почему-то у меня протухший, а QEMU слинкован уже со свежим, хотя я перед процессом обхода нецелованных граблей обновился. И вот тут, вероятно, будут следующие грабли. Я предупредил :)

И вот что у меня получилось:

pacman -Qlp /tmp/lzlib-1.15-1-aarch64.pkg.tar.zst 
lzlib /usr/
lzlib /usr/bin/
lzlib /usr/bin/minilzip
lzlib /usr/include/
lzlib /usr/include/lzlib.h
lzlib /usr/lib/
lzlib /usr/lib/liblz.a
lzlib /usr/lib/liblz.so
lzlib /usr/lib/liblz.so.1
lzlib /usr/lib/liblz.so.1.15
lzlib /usr/share/
lzlib /usr/share/info/
lzlib /usr/share/info/dir
lzlib /usr/share/info/lzlib.info
lzlib /usr/share/licenses/
lzlib /usr/share/licenses/lzlib/
lzlib /usr/share/licenses/lzlib/COPYING
lzlib /usr/share/man/
lzlib /usr/share/man/man1/
lzlib /usr/share/man/man1/minilzip.1

Пакет какое-то время должен лежат тута.

Исправление yars068, :

Кажется, скросс-скомпилировал :) Итак:

  1. Устанавливаем необходимые пакеты:
sudo pacman -Syu aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers
  1. Забираем нужный исходник: pkgctl repo clone --protocol=https lzlib

  2. Делаем makepkg -so;

  3. Насыпаем сверху патчик (имя файла патча должно быть как в изменённом PKGBUILD’е):

--- a/lzlib-1.15/configure	2025-01-09 02:22:51.000000000 +0300
+++ b/lzlib-1.15/configure	2025-07-07 21:18:04.210642166 +0300
@@ -30,8 +30,8 @@
 infodir='$(datarootdir)/info'
 libdir='$(exec_prefix)/lib'
 mandir='$(datarootdir)/man'
-CC=gcc
-AR=ar
+CC=${CC:-gcc}
+AR=${AR:-ar}
 CPPFLAGS=
 CFLAGS='-Wall -W -O2'
 LDFLAGS=


  1. Модифицируем PKGBUILD:
--- lzlib/PKGBUILD	2025-07-07 22:15:58.451086247 +0300
+++ lzlib-arm/PKGBUILD	2025-07-07 22:08:41.084673025 +0300
@@ -6,23 +6,43 @@
 pkgver=1.15
 pkgrel=1
 pkgdesc="A library providing in-memory LZMA compression and decompression functions"
-arch=('x86_64')
+arch=('x86_64' 'aarch64')
 url="http://www.nongnu.org/lzip/lzlib.html"
 license=('BSD-2-Clause')
 depends=('glibc')
-source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig})
+source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig}
+        allow_redefine_CC_AR.patch)
+
 sha256sums=('4afab907a46d5a7d14e927a1080c3f4d7e3ca5a0f9aea81747d8fed0292377ff'
-            'SKIP')
+            'SKIP'
+            '6d907d121374d7d5e08280de70818c4b4cb60febe051868a2365edf4fe52fd43')
+
 validpgpkeys=('1D41C14B272A2219A739FA4F8FE99503132D7742') # Antonio Diaz Diaz
 
+prepare() {
+  if [ "x$arch" == "xaarch64" ] ; then 
+    echo "Setting up the environment to cross-compile"
+    export CC=aarch64-linux-gnu-gcc
+    export CXX=aarch64-linux-gnu-g++
+    export AR=aarch64-linux-gnu-ar
+    export RANLIB=aarch64-linux-gnu-ranlib
+  fi
+  tar xf $pkgname-$pkgver.tar.gz
+  cd $pkgname-$pkgver
+  patch -p2 --verbose -i $srcdir/allow_redefine_CC_AR.patch
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure \
     --prefix=/usr \
+    --disable-ldconfig \
     --enable-shared \
     CFLAGS="$CFLAGS" \
     LDFLAGS="$LDFLAGS"
+
   make
+  make minilzip
 }
 
 check() {
  1. Делаем updpkgsums && makepkg --printsrcinfo > .SRCINFO

  2. Делаем cat /etc/makepkg.conf > makepkg.conf. В файл надо внести следующие изменения:

@@ -35,14 +35,14 @@
 # ARCHITECTURE, COMPILE FLAGS
 #########################################################################
 #
-CARCH="x86_64"
+CARCH="aarch64"
 CHOST="x86_64-pc-linux-gnu"
 
 #-- Compiler and Linker Flags
 #CPPFLAGS=""
-CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+CFLAGS="-march=armv9-a -mtune=cortex-a76 -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-        -fstack-clash-protection -fcf-protection \
+        -fstack-clash-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
 CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \

Обрати внимание на ключи -march, -mtune. Я не знаю, какой именно проц/SoC у тебя, так что поправь при необходимости.

  1. И, наконец, пробуем собрать: makepkg arch=aarch64 --nocheck --config makepkg.conf -fC.

Мне пришлось собирать с --nocheck, потому что пакет

pacman -Ql aarch64-linux-gnu-glibc | grep ld-linux
aarch64-linux-gnu-glibc /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1

– почему-то у меня протухший, а QEMU слинкован уже со свежим, хотя я перед процессом обхода нецелованных граблей обновился. И вот тут, вероятно, будут следующие грабли. Я предупредил :)

И вот что у меня получилось:

pacman -Qlp /tmp/lzlib-1.15-1-aarch64.pkg.tar.zst 
lzlib /usr/
lzlib /usr/bin/
lzlib /usr/bin/minilzip
lzlib /usr/include/
lzlib /usr/include/lzlib.h
lzlib /usr/lib/
lzlib /usr/lib/liblz.a
lzlib /usr/lib/liblz.so
lzlib /usr/lib/liblz.so.1
lzlib /usr/lib/liblz.so.1.15
lzlib /usr/share/
lzlib /usr/share/info/
lzlib /usr/share/info/dir
lzlib /usr/share/info/lzlib.info
lzlib /usr/share/licenses/
lzlib /usr/share/licenses/lzlib/
lzlib /usr/share/licenses/lzlib/COPYING
lzlib /usr/share/man/
lzlib /usr/share/man/man1/
lzlib /usr/share/man/man1/minilzip.1

Пакет какое-то время должен лежат тута.

Исходная версия yars068, :

Кажется, скросс-скомпилировал :) Итак: 0. Устанавливаем необходимые пакеты:

sudo pacman -Syu aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers
  1. Забираем нужный исходник: pkgctl repo clone --protocol=https lzlib

  2. Делаем makepkg -so;

  3. Насыпаем сверху патчик (имя файла патча должно быть как в изменённом PKGBUILD’е):

--- a/lzlib-1.15/configure	2025-01-09 02:22:51.000000000 +0300
+++ b/lzlib-1.15/configure	2025-07-07 21:18:04.210642166 +0300
@@ -30,8 +30,8 @@
 infodir='$(datarootdir)/info'
 libdir='$(exec_prefix)/lib'
 mandir='$(datarootdir)/man'
-CC=gcc
-AR=ar
+CC=${CC:-gcc}
+AR=${AR:-ar}
 CPPFLAGS=
 CFLAGS='-Wall -W -O2'
 LDFLAGS=


  1. Модифицируем PKGBUILD:
--- lzlib/PKGBUILD	2025-07-07 22:15:58.451086247 +0300
+++ lzlib-arm/PKGBUILD	2025-07-07 22:08:41.084673025 +0300
@@ -6,23 +6,43 @@
 pkgver=1.15
 pkgrel=1
 pkgdesc="A library providing in-memory LZMA compression and decompression functions"
-arch=('x86_64')
+arch=('x86_64' 'aarch64')
 url="http://www.nongnu.org/lzip/lzlib.html"
 license=('BSD-2-Clause')
 depends=('glibc')
-source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig})
+source=(https://download.savannah.gnu.org/releases/lzip/$pkgname/$pkgname-$pkgver.tar.gz{,.sig}
+        allow_redefine_CC_AR.patch)
+
 sha256sums=('4afab907a46d5a7d14e927a1080c3f4d7e3ca5a0f9aea81747d8fed0292377ff'
-            'SKIP')
+            'SKIP'
+            '6d907d121374d7d5e08280de70818c4b4cb60febe051868a2365edf4fe52fd43')
+
 validpgpkeys=('1D41C14B272A2219A739FA4F8FE99503132D7742') # Antonio Diaz Diaz
 
+prepare() {
+  if [ "x$arch" == "xaarch64" ] ; then 
+    echo "Setting up the environment to cross-compile"
+    export CC=aarch64-linux-gnu-gcc
+    export CXX=aarch64-linux-gnu-g++
+    export AR=aarch64-linux-gnu-ar
+    export RANLIB=aarch64-linux-gnu-ranlib
+  fi
+  tar xf $pkgname-$pkgver.tar.gz
+  cd $pkgname-$pkgver
+  patch -p2 --verbose -i $srcdir/allow_redefine_CC_AR.patch
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure \
     --prefix=/usr \
+    --disable-ldconfig \
     --enable-shared \
     CFLAGS="$CFLAGS" \
     LDFLAGS="$LDFLAGS"
+
   make
+  make minilzip
 }
 
 check() {
  1. Делаем updpkgsums && makepkg --printsrcinfo > .SRCINFO

  2. Делаем cat /etc/makepkg.conf > makepkg.conf. В файл надо внести следующие изменения:

@@ -35,14 +35,14 @@
 # ARCHITECTURE, COMPILE FLAGS
 #########################################################################
 #
-CARCH="x86_64"
+CARCH="aarch64"
 CHOST="x86_64-pc-linux-gnu"
 
 #-- Compiler and Linker Flags
 #CPPFLAGS=""
-CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
+CFLAGS="-march=armv9-a -mtune=cortex-a76 -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
-        -fstack-clash-protection -fcf-protection \
+        -fstack-clash-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
 CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
 LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \

Обрати внимание на ключи -march, -mtune. Я не знаю, какой именно проц/SoC у тебя, так что поправь при необходимости.

  1. И, наконец, пробуем собрать: makepkg arch=aarch64 --nocheck --config makepkg.conf -fC.

Мне пришлось собирать с --nocheck, потому что пакет

pacman -Ql aarch64-linux-gnu-glibc | grep ld-linux
aarch64-linux-gnu-glibc /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1

– почему-то у меня протухший, а QEMU слинкован уже со свежим, хотя я перед процессом обхода нецелованных граблей обновился. И вот тут, вероятно, будут следующие грабли. Я предупредил :)

И вот что у меня получилось:

pacman -Qlp /tmp/lzlib-1.15-1-aarch64.pkg.tar.zst 
lzlib /usr/
lzlib /usr/bin/
lzlib /usr/bin/minilzip
lzlib /usr/include/
lzlib /usr/include/lzlib.h
lzlib /usr/lib/
lzlib /usr/lib/liblz.a
lzlib /usr/lib/liblz.so
lzlib /usr/lib/liblz.so.1
lzlib /usr/lib/liblz.so.1.15
lzlib /usr/share/
lzlib /usr/share/info/
lzlib /usr/share/info/dir
lzlib /usr/share/info/lzlib.info
lzlib /usr/share/licenses/
lzlib /usr/share/licenses/lzlib/
lzlib /usr/share/licenses/lzlib/COPYING
lzlib /usr/share/man/
lzlib /usr/share/man/man1/
lzlib /usr/share/man/man1/minilzip.1

Пакет какое-то время должен лежат тута.