Бег по граблям

Я люблю бегать по граблям, в частности, натыкаясь на какую-нибудь ошибку, порой исправляю ее и забываю, как именно я ее исправил и спустя несколько месяцев (или лет) опять натыкаюсь на нее и опять начинаю думать, как же ее исправлять.

Так вот, для памяти запишу: код Виртустан-мада и Старого Зеркала плохо собирается на 64-битных системах, флаг -m32 и соответствующие библиотеки помогают не всегда. В частности, под cygwin/64 он либо не собирается либо собирается и сразу падает в корку. Ну и чорт с ним, потому как все нормально собирается на 32-разрядном Цигвине, а 32-разрядные exe нормально работают в 64-разрядной Винде.

А на 64-разрядной Ubuntu 18.04.3 мой Виртустан собрался и нормально работает.

Сборки мадов для Виндовс

Я сделал свежие сборки мадов для 64-разрядной Виндовс. Компилировал я в среде cygwin, это оказалось достаточно просто, все делается примерно как в Линуксе (то есть cmake с нужными параметрами, потом make, подробнее см. документацию в репозитории кода Былин).

Во-первых, сделал тестовую «локалку» с тремя зонами (движок для проверки зон) Былин (версия кода от 6 ноября 2019 года). Вот она. (Примерно то же самое, но немного более старое лежит на официальном сайте Былин).

А во-вторых, я сделал локалку Нового Зеркала (со всеми зонами). Вот.

Зачем можно использовать локалки: на них можно играть (это полноценный сервер), можно соло, можно с друзьями по сети. А можно использовать их для билдерства: тестировать зоны, изучать OLC и триггеры и т.п.

Зеркало и macOS

В рамках проекта «Всё, что шевелится, соберу под Андроидом и Эпплом» адаптировал код Зеркала к macOS

https://github.com/prool/zerkalomud

Это получилось не так просто, как у Виртустан мада, так как код Виртустана взят из более свежего релиза Былин и он адаптирован к 64-разрядной архитектуре. А код Зеркала стар и при 32 разрядах собирается и работает без проблем, а на 64 вылетает в корку на макросах флагов. Место, где вылетало, найдено и исправлено. Это макрос GET_FLAG. Эти проблемы еще частично связаны с тем, что в macOS родной компилятор не gcc, а «богомерзкий clang»

Сборка кода «Былин» на Debian 7 64 bit

Неочевидные (для меня) вещи:

1. Ручная инсталляция 32-битной библиотеки:

cp ~prool/1/usr-lib/usr/lib/gcc/i486-linux-gnu/4.7/libstdc++.a /lib32/

(б-ку libstdc++.a берем из 32-битной Ubuntu 32. Это неправильно, но это работает)

2. В качестве zlib надо инсталлировать 32-битную:

apt-get install lib32z1-dev

Источники инфы:

http://badyblog.com/doustanovka-bibliotek-32bit-na-64bit-debian-linux/

http://stackoverflow.com/questions/3373995/usr-bin-ld-cannot-find-lz

* * *

Update. 30.12.2013

Всё вышеперечисленное относится к случаю сборки Былин в Ubuntu 7/64 с оригинальным Makefile, в котором есть флаг m32, насильственно приводящий получаемый код к 32-битный модели. Стоит убрать этот флаг и всё собирается на ура без необходимости насильственной установки 32-битных библиотек. И работает. Проверено

* * *

Свежий код Виртустан-мада собирается так же, как и свежие Былины, так как это по сути тот же самый код, с минимальными косметическими модификациями

Код «Большого зеркала» (старый код Былин) собирается и работает на 64-битной архитектуре только пр добавлении в Makefile флага m32 в двух местах (для компиляции и для сборки), где именно, можно посмотреть в Makefile Былин или Виртустана (и естественно надо в ОС инсталлировать 32-битные библиотеки, как это написано выше)

* * *

Update 12 Feb 2014. В Ubuntu 12.04.4 LTS 64 bit потребовалось

sudo apt-get install libc6-dev-i386