fluxbox-1.3.5. Зависит от
freetype.
Править src/FbTk/XrmDatabaseHelper.hh:
прям перед
#include «X11/Xresouse.h»
добавить
#include «X11/Xlib.h»
Добавки: ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes --disable-xft
Меню, которое будет появляться при нажатии пр.кн.мыши, есть файл /share/fluxbox/menu. Собственно, все настройки fluxbox'а находятся в этой папке. После первого запуска, всё из этой папки скопируется в /$home/user(или /root)/.fluxbox/ . Последующие запуски fluxbox'а будут считывать настройки уже из папки .fluxbox - так что править уже здесь.
joymouse-0.5. Скачивать
здесь.
После установки, создать:
mkfifo -m 0777 /dev/joymouse
Чтобы использовать с X-server'ом, например с Xgsx'ом, нужно править его конфиг, т.е.
/etc/XGSConfig
если нету этого, что нужно раскомментировать - добавить:
Код
Section "XInput"
Subsection "Mouse"
DeviceName "Joymouse"
Protocol "IMPS/2"
ZAxisMapping 4 5
Port "/dev/joymouse"
Alwayscore
EndSubSection
EndSection
Можно добавить его в $home/.xinitrc с символом "&":
joymouse &
- символ & нужен для запуска xinit'ом сразу нескольких X-прог, названных в .xinitrc.
Попытка установить JAVA-эмулятор для запуска jar-файлов игр и т.п.
Для компиляции требуются установленные в системе пакеты gcc-java и antlr.
jamvm-1.5.4
classpath-0.99. Добавки: --disable-gtk-peer --disable-gconf-peer
Перед запуском, ввести:
export BOOTCLASSPATH=/share/jamvm/classes.zip:/share/classpath/glibj.zip
export LD_LIBRARY_PATH=/lib/classpath
Приложения jar запускать так:
jamvm -jar файл.jar
---===эмулятор java неработает. Внутри файла.jar есть файл META-INF/MANIFEST.MF. В нём нужно указать Main-Class. А как это сделать для готовых файлов.jar я незнаю. Если кто-то знает - просьба отписаться в тему "Линукс для playstation2"===---
ДАЛЕЕ, ВСЁ КАСАТЕЛЬНО БИБЛИОТЕКИ gtk+Xfree86-3.3.6 хоть и быстрый, но всё-таки старый. С ним, как ни старайся, скомпилировать gtk+>=2.0 неполучится. Выход - способ компилирования должен разделится.
Имеется ввиду, что ПОСЛЕ компиляции базы и разного с init И ПЕРЕД компиляцией любого из X-серверов,
необходимо скопировать папку с кросс-компилятором. Смысл в том, что если неполучилось скомпилировать X-прогу со старыми библиотеками от Xfree86-3.3.6,
будем компилировать с новыми, НО ТОЛЬКО static. Static - это флаг gcc. Static проги в большинстве случаев независят от использования системных библиотек с одним лишь минусом - весят больше, занимают RAM больше.
Ну а целевую систему копировать из папки с компилятором, куда установлен XFree86-3.3.6.
Если версия пакета gdk-pixbuf2-devel в системе меньше 2.27.1 - можно не стараться компилировать gtk+ - Ваша система стара. Только ставить новую. Естесственно, установить в систему данный пакет если вы ещё не.
Из поста с Х-сервером установить всё, что отмечено красным цветом (фиолетовое там только для установки Xorg'а с целью теста framebuffer видеодрайвера)
Как только оттуда будет установлен последний пакет, продолжаем собирать:
libFS-1.0.7. Добавки: --enable-malloc0returnsnull
printproto-1.0.5
libXp-1.0.3
libXtst-1.2.3
libffi-3.2.1
pcre-8.39. Если во время сборки, будет ошибка "
conflicting declaration" об
mbstate_t - править Makefile:
DEFS = -DHAVE_CONFIG_H
- добавить -D_GLIBCXX_HAVE_MBSTATE_T:
DEFS = -DHAVE_CONFIG_H
-D_GLIBCXX_HAVE_MBSTATE_Tglib-2.31.22. Именно эта версия, поскольку в версиях по-новее отказались от использования gthread. А некоторые последующие проги, зависящие от glib, так и просят gthread, а патчей в обход не сыщешь.
Если
в системе нет такой проги как
glib-compile-resources - установить пакет glib2-devel.
Ещё
в системе нужен установленный automake>=1.13.
Применить
патчПравить файл glib/giounix.c - добавить #include «bits/posix1_lim.h»
Создать файл config.cache с таким содержимым:
Код
glib_cv_stack_grows=no
glib_cv_uscore=yes
ac_cv_func_posix_getpwuid_r=yes
ac_cv_func_posix_getgrgid_r=yes
Добавки: --enable-static --disable-selinux --disable-gtk-doc-html --disable-man --with-libiconv=gnu --cache-file=config.cache
atk-2.22.0. Добавки: --enable-static
xrender-0.8.3. Править configure - привести к такому виду:
Код
строчка 9283:
#if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
#else
# { { echo "$as_me:$LINENO: error: Render headers not found." >&5
#echo "$as_me: error: Render headers not found." >&2;}
# { (exit 1); exit 1; }; }
#fi
-----------------------------------------------------------------------------
строчка 9345:
#if test $ac_cv_type_xAnimCursorElt = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_XANIMCURSORELT 1
_ACEOF
#else
# { { echo "$as_me:$LINENO: error: Render headers too old. Version $RENDER_VERSION or later is required." >&5
#echo "$as_me: error: Render headers too old. Version $RENDER_VERSION or later is required." >&2;}
# { (exit 1); exit 1; }; }
#fi
Делать configure так: CC=mipsr5900el-unknown-linux-uclibc-gcc ./configure --prefix=$PREFIX --host=mipsel-unknown-linux-gnu PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig --x-includes=$PREFIX/include --x-libraries=$PREFIX/lib
cairo-1.14.8. Править файл src/cairo-xlib-display.c: со строчки 265:
Код
*/
//#if RENDER_MAJOR == 0 && RENDER_MINOR < 10
display->buggy_gradients = TRUE;
//#else
// display->buggy_gradients = FALSE;
//#endif
display->buggy_pad_reflect = FALSE;
Добавки: --enable-fc --enable-ft --disable-gtk-doc-html
harfbuzz-1.4.1. После configure править config.h - добавить
#define HB_NO_MTpango-1.30.1. Версия под glib >= 2.31. Добавки: --disable-gtk-doc-html --enable-static
libXdamage-1.1.4
libXcomposite-0.4.4
gtk+-2.18.9. Файл gtk/updateiconcache.c - удалить:
с #ifdef HAVE_FTW_H
по #else /* !HAVE_FTW_H */ включительно
а также соответствующий #endif
Добавки: --enable-static --disable-gtk-doc-html --without-libtiff gio_can_sniff=no
Собирать командой make GDK_PIXBUF_CSOURCE=/usr/bin/gdk-pixbuf-csource
Во время сборки будет ошибка в demos/gtk-demo . Делать следующее
cd demos/gtk-demo
make clean
rm -f demos.h
- затем править geninclude.pl - искать все места с "defined @" (их 5) - удалять "defined".
cd ../../
Продолжать собирать командой make GDK_PIXBUF_CSOURCE=/usr/bin/gdk-pixbuf-csource
gdk-pixbuf-2.25.2. Версия под glib >= 2.31. Добавки: --without-libtiff --disable-gtk-doc-html --disable-man --enable-static gio_can_sniff=no
Итак, соблюдя все зависимости, наконец добрались до gtk+-3.X !
gtk+-3.4.0. Файл gtk/updateiconcache.c - удалить:
с #ifdef HAVE_FTW_H
по #else /* !HAVE_FTW_H */ включительно
а также соответствующий #endif
Добавки: --enable-static --disable-gtk-doc-html
Во время сборки будет ошибка в demos/gtk-demo - правится так же, как и описано выше у
gtk+-2.18.9GTK-3.4.0 ПОСТРОЕН! Большое дело сделано! Но всё это не только ради него... а ради браузера firefox! Но сначала пару левых либ от которых он зависит.
Скомпилировать вручную себе в систему -
autoconf-2.13. Нужна именно версия 2.13. Добавки: --program-suffix=2.13
Скомпилировать вручную себе в систему -
automake-1.13.1. Нужна именно версия 1.13.1
libIDL-0.8.14. Добавки: libIDL_cv_long_long_format=ll
ORBit2-2.14.19. Если
в системе нет такой проги как
orbit-idl-2 - установить пакет ORBit2-devel.
Пропатчить
патчем.
Делать configure. Собирать командой
make IDL_COMPILER=/usr/bin/orbit-idl-2libxml2-2.6.30. Файл testModule.c - добавить #include «linux/limits.h»
На этом этапе нужно зайти в папку с кросс-компилятором, туда, где его бинарники, и сделать символьные ссылки как mipsel-unknown-linux-gnu- и mipsel-linux-gnu- для всех-всех его тамошних бинарников. Т.е., допустим, кросс-компилятор находится в /usr/local/ps2 . Сделать следующее:
cd /usr/local/ps2/bin
ln -s mipsr5900el-unknown-linux-uclibc-addr2line mipsel-unknown-linux-gnu-addr2line
...
ln -s mipsr5900el-unknown-linux-uclibc-strip mipsel-unknown-linux-gnu-strip
И потом то же самое, только без unknown:
ln -s mipsr5900el-unknown-linux-uclibc-addr2line mipsel-linux-gnu-addr2line
...
ln -s mipsr5900el-unknown-linux-uclibc-strip mipsel-linux-gnu-stripЧто же касательно libxml2 - делать configure так:
./configure --prefix=$PREFIX --host=mipsel-linux-gnu PKG_CONFIG_PATH=$PKG_CONFIG_PATH
popt-1.16
dbus-1.9.6. На время компиляции, править файл кросс-компилятора:
файл include/glib-2.0/glib/gversionmacros.h:
Код
#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_MIN_REQUIRED
#error "GLIB_VERSION_MAX_ALLOWED must be >= GLIB_VERSION_MIN_REQUIRED"
#endif
#if GLIB_VERSION_MIN_REQUIRED < GLIB_VERSION_2_26
#error "GLIB_VERSION_MIN_REQUIRED must be >= GLIB_VERSION_2_26"
#endif
- закомментировать всё это.
Добавок нет. Строить командой make LIBS="$LIBS -lintl"
После установки, раскомментировать закомментированное в файле кросс-компилятора include/glib-2.0/glib/gversionmacros.h
dbus-glib-0.102. Если
в системе нет такой проги как
dbus-binding-tool - установить пакет dbus-glib-devel.
После configure, строить командой make DBUS_BINDING_TOOL=/usr/bin/dbus-binding-tool
dbus-1.9.6. Опять он. Пересобираем с dbus-glib.
Добавки: --with-dbus-glib . Исправления и команда для построения те же.
GConf-3.2.6 (distclean не оказывает нужного эффекта). Если
в системе нет такой проги как
intltool-update - установить пакет intltool.
Править файлы:
файл backends/markup-tree.c - добавить #include «linux/limits.h»
файл backends/xml-dir.c - добавить #include «linux/limits.h»
Добавки: --disable-gsettings-backend
После configure, удалить всё из папки
examples и скопировать туда содержимое папки
doc. Строить командой make ORBIT_IDL=/usr/bin/orbit-idl-2
libtool-2.4.6. См спойлер "Мультимедиа"
json-c. Версия не указана, т.к. исходник на github
git clone https://github.com/json-c/json-c.git
cd json-c
sh autogen.sh
После, делать configure, строить и устанавливать как обычно.
alsa-lib-1.0.29. См спойлер "Мультимедиа"
libsndfile-1.0.27
libatomic_ops-7.4.4
pulseaudio-9.99.1. Добавки: --enable-static
После configure, строить командой make LIBS="$LIBS -lintl -lm -lcap -lrt -ldl"
После установки, зайти в $PREFIX/lib и сделать
mv pulseaudio/* ./
rmdir pulseaudio
ln -s . pulseaudio
alsa-plugins-1.0.29. См спойлер "Мультимедиа"
mozjpeg-2.0. Версию по-новее с GCC-4.9.0 собрать неудаётся. Получить configure следующими действиями:
libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
Делать configure так: ./configure --prefix=$PREFIX --host=mipsel-linux-gnu PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
icu4c-58_2.
НЕ НУЖЕН. Алгоритм компиляции оставлен на всякий случай. Если
в системе нет такой проги как
icupkg - установить пакет icu.
У себя в системе в /usr создать папку
config. В этой папке создать файлы:
icucross.inc:
Код
CURR_FULL_DIR?=$(shell pwd | sed 's/ /\\ /g')
и icucross.mk:
Код
CROSS_ICU_VERSION=56.1
TOOLEXEEXT=
TOOLBINDIR=$(cross_buildroot)/bin
TOOLLIBDIR=$(cross_buildroot)/lib
INVOKE=LD_LIBRARY_PATH=$(TOOLLIBDIR):$(cross_buildroot)/stubdata:$(cross_buildroot)/tools/ctestfw:$$LD_LIBRARY_PATH
PKGDATA_INVOKE=LD_LIBRARY_PATH=$(cross_buildroot)/stubdata:$(cross_buildroot)/tools/ctestfw:$(TOOLLIBDIR):$$LD_LIBRARY_PATH
Править файл source/common/umutex.h - удалить всё содержимое между указанных строчек включительно:
Код
#if defined (U_USER_ATOMICS_H)
#include U_MUTEX_XSTR(U_USER_ATOMICS_H)
...
return __sync_sub_and_fetch(p, 1);
}
U_NAMESPACE_END
#else
- и соответствующий
#endifСтроить (естесственно) в папке source. Добавки: --enable-static --disable-samples --with-cross-build=/usr
После configure, править файл data/Makefile:
заменить все
$(INVOKE) $(TOOLBINDIR)/icupkg
на
/usr/sbin/icupkg
Функции из musl. Добываются из исходника musl-1.1.16.
Файлы fenv.S есть как для ABI O32 так и для N32!Перейти в папку src/math и создать здесь файл compile.sh с содержимым:
Код
CC=mipsr5900el-unknown-linux-uclibc-gcc
libtool --tag=CC --mode=compile ${CC} -g -O2 -fPIC -MT nearbyintf.lo -MD -MP -MF nearbyintf.Tpo -c -o nearbyintf.lo nearbyintf.c
libtool --tag=CC --mode=compile ${CC} -g -O2 -fPIC -MT nearbyintl.lo -MD -MP -MF nearbyintl.Tpo -c -o nearbyintl.lo nearbyintl.c
libtool --tag=CC --mode=compile ${CC} -g -O2 -fPIC -MT fenv.lo -MD -MP -MF fenv.Tpo -c -o fenv.lo fenv.S
${CC} -shared -o libm_add.so fenv.o nearbyintf.o nearbyintl.o
rm -rf *.o
rm -rf *.lo
rm -rf *.Tpo
libtool --tag=CC --mode=compile ${CC} -g -O2 -MT nearbyintf.lo -MD -MP -MF nearbyintf.Tpo -c -o nearbyintf.lo nearbyintf.c
libtool --tag=CC --mode=compile ${CC} -g -O2 -MT nearbyintl.lo -MD -MP -MF nearbyintl.Tpo -c -o nearbyintl.lo nearbyintl.c
libtool --tag=CC --mode=compile ${CC} -g -O2 -MT fenv.lo -MD -MP -MF fenv.Tpo -c -o fenv.lo fenv.S
libtool --tag=CC --mode=link ${CC} -g -O2 -o libm_add.la nearbyintf.lo nearbyintl.lo
mv .libs/libm_add.a ./
rm -rf *.o
rm -rf *.lo
rm -rf *.la
rm -rf *.Tpo
rm -rf .libs
, где fenv.S (для O32) брать из src/fenv/mips . Затем запустить только что созданный compile.sh:
sh compile.sh
- должны построиться файлы libm_add.so и libm_add.a - поместить их в коллекцию библиотек целевой системы, т.е.:
mv libm_add.(so,a} $(PREFIX)/lib/
firefox-52.01.
Для построения firefox необходимо, чтобы кросс-компилятор был построен с флагом --with-llsc ! (opcodes "ll" и "sc" будут эмулироваться ядром)
Если
в системе нет такой проги как
ld.gold - установить пакет binutils-devel. НО, возможно, этого будет недостаточно...
Править файлы:
файл modules/libjar/nsZipArchive.cpp - добавить #include «linux/limits.h»
файл testing/gtest/gtest/src/gtest-filepath.cc - добавить #include «bits/posix1_lim.h»
файл widget/NativeKeyToDOMKeyName.h - добавить #include "compat/gdk/gdkkeysyms.h"
файл extensions/spellcheck/src/mozSpellChecker.h - исправить #include "RemoteSpellCheckEngineChild.h" на #include "
../hunspell/glue/RemoteSpellCheckEngineChild.h"
файл xpcom/ds/nsMathUtils.h: со строчки 109:
Код
return std::isfinite(aNum);
#else
+ #ifdef _GLIBCXX_CMATH
+ return std::isfinite(aNum);
+ #else
return finite(aNum);
+ #endif
#endif
}
Следующие исправления для двух файлов применены потому, что atomics'ы используют файлы с ассемблерными вставками "ll" и "sc", неподдерживаемые процессором PS2. Повторюсь, они будут эмулироваться ядром линукса.
файл ipc/chromium/src/base/atomicops_internals_mips_gcc.h: со строчек 53, 76 и 99; а также
файл toolkit/components/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h: со строчек 55, 78 и 101:
Код
__asm__ __volatile__(".set push\n"
".set noreorder\n"
+ ".set mips2\n"
"1:\n"
"ll %0, %5\n" // prev = *ptr
файл js/src/jsmath.cpp: со строчки 64:
Код
# if defined(__x86_64__)
# define GETRANDOM_NR 318
# elif defined(__i386__)
# define GETRANDOM_NR 355
# elif defined(__arm__)
# define GETRANDOM_NR 384
+# elif defined(__mips__)
+# include <sgidefs.h>
+# if _MIPS_SIM == _MIPS_SIM_ABI32
+# define GETRANDOM_NR 4353
+# elif _MIPS_SIM == _MIPS_SIM_ABI64
+# define GETRANDOM_NR 5313
+# elif _MIPS_SIM == _MIPS_SIM_NABI32
+# define GETRANDOM_NR 6317
+# endif
# endif
файл gfx/graphite2/src/MozGrMalloc.h:
Код
#include "mozilla/mozalloc.h"
+/*#if defined(XP_LINUX)
+
#define malloc moz_xmalloc
#define calloc moz_xcalloc
#define realloc moz_xrealloc
+
+#else*/
+
+// extern "C" is needed for the Solaris build, while the inline
+// functions are needed for the MinGW build. They break gcc 5.4.0
+// on Linux however, so keep the old #define's above for Linux
+
+extern "C" inline void* malloc(size_t size)
+{
+ return moz_xmalloc(size);
+}
+
+extern "C" inline void* calloc(size_t nmemb, size_t size)
+{
+ return moz_xcalloc(nmemb, size);
+}
+
+extern "C" inline void* realloc(void *ptr, size_t size)
+{
+ return moz_xrealloc(ptr, size);
+}
+
+//#endif // defined(XP_LINUX)
файл gfx/cairo/cairo/src/cairo-xlib-xender-private.h: со строчки 100:
Код
* on. Instead, use the version; gradients were introdiced in 0.10. */
//#if RENDER_MAJOR == 0 && RENDER_MINOR < 10
#define XRenderCreateLinearGradient _int_consume
...
и соответствующий
//#endif
файл gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp: со строчки 98:
Код
float absval = std::abs(value);
- float frac = absval - std::round(absval);
+ float frac = absval - round(absval);
if (frac > 0.0001f)
Строить в папке build. Команда для configure: CROSS_COMPILE=1 PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ../configure --prefix=$PREFIX --target=mipsel-linux-gnu --enable-application=browser --with-system-jpeg=$PREFIX
После configure, править файлы:
файл build/modules/fdlibm/src/backend.mk - в DEFINES добавить -D_GLIBCXX_HAVE_FENV_H:
DEFINES += -DMOZ_HAS_MOZGLUE
-D_GLIBCXX_HAVE_FENV_Hфайлы build/toolkit/library/Makefile , build/js/src/jsapi-tests/Makefile и build/js/src/gdb/Makefile: написать следующее предпоследней строчкой:
Пробовать строить. Если остановится с ошибкой "out of file descriptors and couldn't close any" - собрать вручную
binutils-2.27 себе в систему, используя добавки --enable-gold и --enable-plugins . О том, как пересобрать системный binutils подобающим образом - поищите в интернете сами, для разных дистрибутивов эта операция своя.
Собирается ОЧЕНЬ ДОЛГО. На 4хъядерном ПК собирал не меньше полутора часа это точно.