Если чистая система и не установлены build-essential и wget, прочее.. то надо установить, понятно что:
sudo apt update
sudo apt install build-essential wget tar git libtool autoconf automake pkg-config make gdb-multiarch -yНо, у меня было уже установлено, поэтому не помню что там из коробки нету.
Скачал тулчейн, которым для PlayStation Classic обычно компилят:
wget http://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabihf/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xzРаспаковал в /opt
sudo tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz -C /optСделал скрипт, как написано на
https://github.com/Jetup13/PlayStation-Classic-Wiki/wiki/Dev-Environment#virtual-boxТо есть, в текстовом редакторе создал файл
nano ~/arm-cross-compile-env.shУказал там пути
#!/bin/bash export PATH=/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin:$PATH export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ export AR=arm-linux-gnueabihf-ar export AS=arm-linux-gnueabihf-as export LD=arm-linux-gnueabihf-ld export RANLIB=arm-linux-gnueabihf-ranlib export STRIP=arm-linux-gnueabihf-strip export NM=arm-linux-gnueabihf-nm export OBJCOPY=arm-linux-gnueabihf-objcopy export OBJDUMP=arm-linux-gnueabihf-objdump export PKG_CONFIG_PATH=/usr/arm-linux-gnueabihf/lib/pkgconfig |
сделал исполняемым
chmod +x ~/arm-cross-compile-env.shподключил
source ~/arm-cross-compile-env.shНа виртуалке с Debian 12 небыло ещё git, установил
apt update
apt install gitСкачал последнюю версию ядра для Паприум:
git clone --depth 1 https://github.com/pav1388/Genesis-Plus-GX-PUNCHiUM.gitзашёл туда
cd Genesis-Plus-GX-PUNCHiUMnano Makefile.libretroВ Makefile.libretro нашёл и удалил секцию что было для PlayStation Classic, добавил эту:
# (armv8 a35, hard point, neon based) ### # Playstation Classic else ifeq ($(platform), classic_armv8_a35) TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC SHARED := -shared -Wl,--version-script=$(CORE_DIR)/libretro/link.T -Wl,--no-undefined
# Essential compile flags without LTO-related flags CFLAGS += -O2 \ -fdata-sections -ffunction-sections -Wl,--gc-sections \ -fno-stack-protector -fomit-frame-pointer \ -marm -mtune=cortex-a35 -mfpu=neon-fp-armv8 -mfloat-abi=hard \ -march=armv8-a
CXXFLAGS += $(CFLAGS) ASFLAGS += $(CFLAGS)
HAVE_NEON = 1 ARCH = arm BUILTIN_GPU = neon USE_DYNAREC = 1 ####################################### |
То есть, без агрессивных оптимизаций, мешали компилить и лень было разбираться
Запустил компиляцию:
platform=classic_armv8_a35 make -f Makefile.libretroСделал strip (не обязательно, на ~400Кб меньше стал бинарник)
/opt/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip genesis_plus_gx_libretro.soЕсли не работает, то как минимум странно, вроде бы всё по-феншую. Почти, можно пробовать агрессивные ключи оптимизации, но я сумневаюсь оно заметно быстрее станет.
---------------------
Сделано было в VirtualBox 7.0 с Debian 12, под рукой другого не оказалось. На удивление, быстро скомпилилось.