mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-18 22:12:40 +00:00
1763054921
This commit is contained in:
parent
ef8144e4b6
commit
1ebb821439
1 changed files with 67 additions and 13 deletions
|
|
@ -81,7 +81,7 @@ elseif codename == "602" then
|
|||
|
||||
## Крос-компіляція PocketBook / ARMv6 на Linux / amd64
|
||||
|
||||
Запустити готові бінарники для PocketBook з асету відповідних релізів на GitHub не вийде, бо вони зкомпільовані для сучасних ARM (мабуть 64) і при такій спробі, в crash.log буде помилка:
|
||||
Запустити готові бінарники (application/koreader) для PocketBook з асету відповідних релізів на GitHub не вийде, бо вони зкомпільовані для сучасних ARM і при такій спробі, в crash.log буде помилка:
|
||||
|
||||
``` crash.log
|
||||
Illegal instruction
|
||||
|
|
@ -97,27 +97,83 @@ ARMv6-compatible processor rev 6 (v6l)
|
|||
Я спочатку подумав, що самий хитрий і вирішив просто підмінити бінарники з іншого релізу:
|
||||
=> https://github.com/koreader/koreader/releases/download/v2025.10/koreader-linux-armv7l-v2025.10.tar.xz
|
||||
|
||||
Але не все так склалося як гадалося: у цьому наборі зовсім інша структура та набори файлів. Отже довелось таки розгортати середовище для крос-компіляції. Минаючи довгу передісторію, потрібно виконати наступні кроки, попередньо ознайомившись з актуальною документацією:
|
||||
Але не все так склалося як гадалося: у цьому наборі зовсім інша структура та набори файлів. Отже довелось таки розгортати середовище для крос-компіляції. Минаючи довгу передісторію, потрібно виконати кроки в розділах нижче, попередньо ознайомившись з актуальною документацією:
|
||||
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building.md Building
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building_targets.md Building targets
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Porting.md Porting
|
||||
|
||||
### koxtoolchain
|
||||
### crosstool-ng
|
||||
|
||||
Завантажуємо середовище:
|
||||
Це залежність koxtoolchain, даний розділ можна пропустити якщо не плануєте збирати koxtoolchain з сорсу.
|
||||
|
||||
=> https://github.com/koreader/koxtoolchain/releases/tag/2025.05
|
||||
Згадую про crosstool-ng, бо на системах (зокрема Fedora 43) з останніми версіями wget є баг:
|
||||
=> https://github.com/NiLuJe/crosstool-ng/issues/9
|
||||
|
||||
Розпаковуємо в теку, де лежать бінарні файли, або створюємо симлінки. В мене деякі тимчасові бінарники лежать окремо, в $HOME/Bins - цей шлях я використовую в $PATH:
|
||||
і готове рішення:
|
||||
=> https://github.com/crosstool-ng/crosstool-ng/pull/2439 Remove --passive-ftp from wget usage #2439
|
||||
|
||||
``` bash
|
||||
export PATH="$PATH:$HOME/Bins/kindle/x-tools/arm-kindle-linux-gnueabi/bin:$PATH"
|
||||
Але для PocketBook (в koxtoolchain) використовується стара залежність, яку я локально замінив на свою гілку зі ще одним, додатковим випилом --passive-ftp:
|
||||
=> https://github.com/NiLuJe/crosstool-ng/pull/10
|
||||
|
||||
Щоб застосувати мою гілку, не чекаючи мержу, оновлюємо джерела секції "pocketbook":
|
||||
|
||||
``` scripts/scripts.mk
|
||||
# змінюємо рядки ~196-197
|
||||
pocketbook)
|
||||
# NOTE: Prevent libstdc++ from pulling in utimensat@GLIBC_2.6
|
||||
export glibcxx_cv_utimensat=no
|
||||
|
||||
Build_CT-NG \
|
||||
https://github.com/oooo-ps/crosstool-ng.git \
|
||||
remove--passive-ftp \
|
||||
"arm-${1}-linux-gnueabi"
|
||||
```
|
||||
|
||||
### koreader
|
||||
### Збірка koreader на базі патчу koxtoolchain
|
||||
|
||||
Встановивши koxtoolchain, спочатку ставимо залежності для вашої операційної системи:
|
||||
``` bash
|
||||
git clone https://github.com/koreader/koxtoolchain.git
|
||||
cd koxtoolchain
|
||||
```
|
||||
|
||||
Для секції PocketBook, я оновив рядок ARCH_FLAGS:
|
||||
|
||||
``` refs/x-compile.sh
|
||||
PB )
|
||||
# NOTE: The TC itself is built in ARM mode, otherwise glibc 2.9 doesn't build (fails with a "r15 not allowed here" assembler error on csu/libc-start.o during the early multilib start-files step).
|
||||
# AFAICT, the official SDK doesn't make a specific choice on that front (i.e., it passes neither -marm not -mthumb. That usually means ARM)...
|
||||
# NOTE: This is probably related to our choice of -mcpu target, as the kindle TC builds just fine on the same glibc version... for armv6j ;).
|
||||
# ARCH_FLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb"
|
||||
ARCH_FLAGS="-march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -mthumb"
|
||||
```
|
||||
|
||||
Компілюємо:
|
||||
|
||||
``` bash
|
||||
./gen-tc.sh pocketbook
|
||||
```
|
||||
* можливо, доведеться довстановити:
|
||||
``` bash
|
||||
sudo dnf install texinfo help2man
|
||||
```
|
||||
|
||||
### Збірка koreader на базі релізу kindle
|
||||
|
||||
Цей метод мені порадили тут:
|
||||
=> https://github.com/koreader/koreader/issues/14600#issuecomment-3523865864
|
||||
|
||||
Завантажуємо бінарний реліз Kindle:
|
||||
|
||||
=> https://github.com/koreader/koxtoolchain/releases/download/2025.05/kindle.tar.gz
|
||||
|
||||
Розпаковуємо його в потрібну теку або створюємо туди симлінки:
|
||||
|
||||
``` bash
|
||||
export PATH="$PATH:$HOME/x-tools/arm-kindle-linux-gnueabi/bin:$PATH"
|
||||
```
|
||||
|
||||
Додатково ставимо залежності для вашої операційної системи:
|
||||
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building.md#prerequisites Prerequisites
|
||||
|
||||
|
|
@ -130,7 +186,7 @@ git clone https://github.com/koreader/koreader.git
|
|||
cd koreader && ./kodev fetch-thirdparty
|
||||
```
|
||||
|
||||
Перед тим, як продовжити, мені порадили спробувати змінити у файлі:
|
||||
Так як у цьому випадку використовуюється підміна платформи бінарниками ARM Kindle, замінюємо:
|
||||
|
||||
``` base/Makefile.defs
|
||||
CHOST?=arm-pocketbook-linux-gnueabi
|
||||
|
|
@ -156,8 +212,6 @@ cd koreader && ./kodev fetch-thirdparty
|
|||
./kodev release pocketbook
|
||||
```
|
||||
|
||||
Тут в мене виникла інша проблема, тому закінчу цей матеріал як з нею розберусь.
|
||||
|
||||
## Посилання
|
||||
|
||||
=> https://github.com/koreader/koreader/issues/14600 Тема №14600 на GitHub (дякую усім, хто долучився)
|
||||
Loading…
Add table
Add a link
Reference in a new issue