LINUX.ORG.RU

make

 


0

2

Привет всем ещё раз. Может быть кто поможет советом как скомпилировать маленький файлик и для линя и для оффтопика? А то я английский ридми переводил-переводил переводчиком, но там наверное не описаны сами собой разумеющиеся вещи, потому что ничего не получается ни в одной из системок. :(

https://github.com/yquake2/rogue

https://github.com/yquake2/zaero

В винде вот что выдаёт:

===> Building game.so
make.exe release/game.so
make.exe[1]: Entering directory `/home/midori/zaero-master'
===> CC src/g_ai.c
make.exe[1]: cc: Command not found
make.exe[1]: *** [build/src/g_ai.o] Error 127
make.exe[1]: Leaving directory `/home/midori/zaero-master'
make.exe[1]: *** [zaero] Error 2

Перемещено leave из admin

★★★★★

Есть уже готовые бинарные сборки и для Windows и для Linux.

А так, скорее всего современной версией компилятора собрать исходный код 1999 года у вас вряд ли получится без внесения в него правок.

kostik87 ★★★★★
()

В винде вот что выдаёт:

Не находите странным постить на linux.org.ru ошибки компиляции именно под виндной, а не под линуксом?

английский ридми переводил-переводил

Вот этот readme преводили: https://github.com/yquake2/yquake2/blob/master/README ? Там где написано, что под винду нужно ставить mingw build environment: http://deponie.yamagi.org/quake2/windows/build/

mky ★★★★★
()
Ответ на: комментарий от kostik87

Знаю что есть. Но у пары дополнений не открываются двери если ставить из готовых deb.

Должно получиться, т.к. порт ещё жив и время от времени обновляется.

Инструкции тут: https://github.com/yquake2/yquake2/blob/master/README

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от mky

Неа, не нахожу. Ресурсы по винде требуют регистрации, да и сидел я на винфаке и ещё одном форуме, там никто мне ни разу не помог, а тут сидят многостаночники. Ну или посоветуйте ресурс или человека к кому обратиться.

Да, этот. Как раз оттуда скачал, зашёл в каталог с Makefile и написал make.

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Пойду проверять и пробовать.

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Есть.

arcturus@crunchbang:~/Desktop/rogue-master$ make
===> Building game.so
make release/game.so
make[1]: Entering directory `/home/arcturus/Desktop/rogue-master'
===> CC src/g_ai.c
In file included from src/header/local.h:11:0,
                 from src/g_ai.c:8:
src/header/shared.h:13:20: fatal error: assert.h: Нет такого файла или каталога
compilation terminated.
make[1]: *** [build/src/g_ai.o] Ошибка 1
make[1]: Leaving directory `/home/arcturus/Desktop/rogue-master'
make: *** [rogue] Ошибка 2
arcturus@crunchbang:~/Desktop/rogue-master$

cinyflo ★★★★★
() автор топика

В тарболле есть файл INSTALL, а в нем список dev-пакетов, которые необходимо установить

libc6-dev
libx11-dev
libsdl1.2-dev
libopenal-dev
libpng12-dev
libjpeg8-dev
zlib1g-dev
mesa-common-dev
liblircclient-dev
libcurl4-gnutls-dev

kravich ★★★★
()
Последнее исправление: kravich (всего исправлений: 1)

А вообще, весьма годный движок. Побегал в сингле, очень понравился cell-shading у моделек, как-то вторая квака с ним свежо смотрится

kravich ★★★★
()
Ответ на: комментарий от kravich

Дык и я об этом. :)

Только у дополнений rogue и zaero либо двери не открываются, либо сейвы не загружаются. Вот гружусь по эту тему.

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от kravich
arcturus@crunchbang:~$ sudo aptitude install libc6-dev libx11-dev libsdl1.2-dev libpng12-dev libjpeg8-dev zlib1g-dev mesa-common-dev liblircclient-dev libcurl4-gnutls-dev 
[sudo] password for arcturus: 
Следующие НОВЫЕ пакеты будут установлены:        
  comerr-dev{a} krb5-multidev{a} libasound2-dev{a} libavahi-client-dev{a} libavahi-common-dev{a} libc6-dev{b} 
  libcaca-dev{a} libcurl4-gnutls-dev libdbus-1-dev{a} libdirectfb-dev{a} libdirectfb-extra{a} libfreetype6-dev{a} 
  libgcrypt11-dev{a} libgl1-mesa-dev{ab} libglib2.0-bin{a} libglib2.0-dev{a} libglu1-mesa-dev{a} libgnutls-dev{a} 
  libgnutls-openssl27{a} libgnutlsxx27{a} libgpg-error-dev{a} libgssrpc4{a} libidn11-dev{a} libjpeg8-dev 
  libkadm5clnt-mit8{a} libkadm5srv-mit8{a} libkdb5-6{a} libkrb5-dev{a} libldap2-dev{a} liblircclient-dev 
  libp11-kit-dev{a} libpcre3-dev{a} libpcrecpp0{a} libpng12-dev libpulse-dev{a} librtmp-dev{a} libsdl1.2-dev 
  libslang2-dev{a} libssh2-1-dev{a} libtasn1-3-dev{a} libts-dev{a} libx11-dev{b} libxext-dev{ab} mesa-common-dev 
  pkg-config{a} x11proto-core-dev{a} xorg-sgml-doctools{a} zlib1g-dev{b} 
РЕКОМЕНДУЮТСЯ следующие пакеты, но автоматически они установлены НЕ БУДУТ:
  libx11-doc 
0 пакетов обновлено, 48 установлено новых, 0 пакетов отмечено для удаления, и 3 пакетов не обновлено.
Необходимо получить 19,7 MB архивов. После распаковки 60,3 MB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
 libgl1-mesa-dev : Зависит: libgl1-mesa-glx (= 8.0.5-4+deb7u2) но установлен 9.2.2-1 
 libxext-dev : Зависит: libxext6 (= 2:1.3.1-2+deb7u1) но установлен 2:1.3.2-1 
               Зависит: x11proto-xext-dev (>= 7.0.99.2) но его установка не запланирована.
 zlib1g-dev : Зависит: zlib1g (= 1:1.2.7.dfsg-13) но установлен 1:1.2.8.dfsg-1 
 libc6-dev : Зависит: libc6 (= 2.13-38+deb7u1) но установлен 2.17-97 
             Зависит: libc-dev-bin (= 2.13-38+deb7u1) но его установка не запланирована.
 libx11-dev : Зависит: libx11-6 (= 2:1.5.0-1+deb7u1) но установлен 2:1.6.2-1 
              Зависит: libxau-dev (>= 1:1.0.0-1) но его установка не запланирована.
              Зависит: libxdmcp-dev (>= 1:1.0.0-1) но его установка не запланирована.
              Зависит: x11proto-input-dev но его установка не запланирована.
              Зависит: x11proto-kb-dev но его установка не запланирована.
              Зависит: xtrans-dev но его установка не запланирована.
              Зависит: libxcb1-dev но его установка не запланирована.
открыто: 63; закрыто: 387; отброшено: 15; конфликтует: 22                                .Следующие действия разрешат зависимости:

      Сохранить для следующих пакетов их текущие версии:
1)      comerr-dev [Не установлен]                      
2)      krb5-multidev [Не установлен]                   
3)      libasound2-dev [Не установлен]                  
4)      libc6-dev [Не установлен]                       
5)      libcaca-dev [Не установлен]                     
6)      libcurl4-gnutls-dev [Не установлен]             
7)      libdirectfb-dev [Не установлен]                 
8)      libfreetype6-dev [Не установлен]                
9)      libgcrypt11-dev [Не установлен]                 
10)     libgl1-mesa-dev [Не установлен]                 
11)     libglib2.0-dev [Не установлен]                  
12)     libglu1-mesa-dev [Не установлен]                
13)     libgnutls-dev [Не установлен]                   
14)     libjpeg8-dev [Не установлен]                    
15)     libkrb5-dev [Не установлен]                     
16)     liblircclient-dev [Не установлен]               
17)     libpcre3-dev [Не установлен]                    
18)     libpng12-dev [Не установлен]                    
19)     libpulse-dev [Не установлен]                    
20)     librtmp-dev [Не установлен]                     
21)     libsdl1.2-dev [Не установлен]                   
22)     libslang2-dev [Не установлен]                   
23)     libssh2-1-dev [Не установлен]                   
24)     libx11-dev [Не установлен]                      
25)     libxext-dev [Не установлен]                     
26)     mesa-common-dev [Не установлен]                 
27)     zlib1g-dev [Не установлен]                      



Принять данное решение? [Y/n/q/?] 
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 3 пакетов не обновлено.
Необходимо получить 0 B архивов. После распаковки 0 B будет занято.
                                                 
arcturus@crunchbang:~$
cinyflo ★★★★★
() автор топика
Ответ на: комментарий от kostik87

А так, скорее всего современной версией компилятора собрать исходный код 1999 года у вас вряд ли получится без внесения в него правок
код 1999 года

Ты темой не ошибся? Код из сабжа отлично собирается GCC 4.8.

Gotf ★★★
()
Последнее исправление: Gotf (всего исправлений: 1)
Ответ на: комментарий от Gotf

Я не обратил внимания на ссылки, думал ТС собирает quake2 из исходников на сайте Id Software.

kostik87 ★★★★★
()
Ответ на: комментарий от Gotf

Вы пробовали?

А можно собирать из исходников в винде файлы, предназначенные для линя или наоборот?

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от cinyflo

Вы пробовали?

Да, недавно последний релиз собрал.

А можно собирать из исходников в винде файлы, предназначенные для линя или наоборот?

ЯННП. Ты хочешь под виндой собрать бинарник, который в линуксе работать будет?

Gotf ★★★
()
Ответ на: комментарий от Gotf

А дополнения какие-нибудь включали?

Я про то, что если в винде собирать исходники по ссылкам в первом сообщении, то на выходе будет dll, а если в линуксе, то та же библиотека, соответственно so. А если нужно и то и другое, в разных системах собирать чтоли?

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от cinyflo

А дополнения какие-нибудь включали?

В смысле? С yq2 я собирал только два официальных аддона.

А если нужно и то и другое, в разных системах собирать чтоли?

Вроде как-то можно и в одной, но я не сталкивался. В любом случае это не очень просто.

Gotf ★★★
()
Ответ на: комментарий от cinyflo

А можно собирать из исходников в винде файлы, предназначенные для линя или наоборот?

Нет, там собираются библиотеки, содержащие машинный код. Точнее можно, но для этого нужно освоить кросс-компиляцию. А это весьма трудно в отношении винды. В лине есть, конечно, MinGW, но, как я понял, тебе нужна рабочая версия под онтопик.

EXL ★★★★★
()
Ответ на: комментарий от cinyflo

Попробуй посмотреть другие предложения aptitude по разрешению конфликтов (ответить n на вопрос Y/n/q/?), скорее всего он предложит что-нибудь подходящее.

kravich ★★★★
()
Ответ на: комментарий от cinyflo

Oh shi~, ничего себе меня заглючило. Я говорил про q2pro, про который прочитал, перейдя по ссылке в похожих темах =D

kravich ★★★★
()
Ответ на: комментарий от kravich

Ага, у проектов, которые пытается скомпилировать cinyflo, в зависимостях лишь «libc»:

 > ldd release/game.so 
        linux-vdso.so.1 =>  (0x00007fff211c1000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe0eaf6e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe0ec69f000)
 > grep -r 'dlopen' .
[1]
EXL ★★★★★
()
Ответ на: комментарий от EXL

Да, у аддонов на выходе только одна библиотека, а у самого движка больше файлов, наверное поэтому.

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от cinyflo

Да, конечно. Статические (*.a) и динамические (*.so) библиотеки зависят от битности. И содержат различный машинный код.

EXL ★★★★★
()
Ответ на: комментарий от cinyflo

Для винды, x86: [RGhost]

«rogue» собрался отлично, а вот у «zaero» Makefile для «cmd.exe». Пришлось немного пропатчить его под «MSYS» и собрать. Патч:

diff --git a/Makefile b/Makefile
index 8c9992c..1cf9e45 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,11 @@ else
 OSTYPE := $(shell uname -s)
 endif
 
+# Special case for MinGW
+ifneq (,$(findstring MINGW,$(OSTYPE)))
+OSTYPE := Windows
+endif
+
 # Detect the architecture
 ifeq ($(OSTYPE), Windows)
 # At this time only i386 is supported on Windows
@@ -100,7 +105,7 @@ endif
 ifeq ($(OSTYPE), Windows)
 clean:
 	@echo "===> CLEAN"
-	@-rmdir /S /Q release build
+	${Q}rm -Rf release build
 else
 clean:
 	@echo "===> CLEAN"
@@ -113,12 +118,12 @@ endif
 ifeq ($(OSTYPE), Windows)
 zaero:
 	@echo "===> Building game.dll"
-	${Q}tools/mkdir.exe -p release
+	${Q}mkdir -p release
 	${MAKE} release/game.dll
 
 build/%.o: %.c
 	@echo "===> CC $<"
-	${Q}tools/mkdir.exe -p $(@D)
+	${Q}mkdir -p $(@D)
 	${Q}$(CC) -c $(CFLAGS) -o $@ $<
 else
 zaero:

В принципе, должно работать, проверьте.
Если не будет работать, значит скорее всего нужно подлинковать библиотеку libc статически. При компиляции -static-libgcc.

Собирал на MinGW с GCC 4.6.2 Под Linux собирал с помощью GCC 4.7.3

EXL ★★★★★
()
Ответ на: комментарий от EXL

Обязательно проверю, а можно узнать, mingw вы брали по ссылке в описании? А gcc откуда брать и куда класть? Просто не вечно же добрых людей просить, хочу и сам понять хоть немного. А линукс у вас какой? Не wheezy, да?

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Да вот не поверишь, - сам в шоке, что до сих пор никто ничего лучше так и не придумал. :)

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от cinyflo

жи есть клиент r1q2, который в вине на отличненько работает, нед надо конпелять. :)

anonymous
()
Ответ на: комментарий от anonymous

не кармака, а иккулуса. он в 1997 году порт писал под линукс, вы че! последний апдейт был в 2001 году. ясен пень, просто так не соберется

автору советую yamagi-quake2

mazdai ★★★
()
Ответ на: комментарий от cinyflo

Обязательно проверю, а можно узнать, mingw вы брали по ссылке в описании?

Нет, у меня старенький MinGW, который я давным давно скачал и вручную дополнил всякими разными библиотеками, типа SDL_mixer, SDL, libxml, libcurl и пр.

А gcc откуда брать и куда класть?

GCC и все необходимые библиотеки идут в поставке с MinGW.

А линукс у вас какой? Не wheezy, да?

Linux Mint 15 KDE, но для компиляции дистрибутив особого значения не имеет.

Я про то, что если в винде собирать исходники по ссылкам в первом сообщении, то на выходе будет dll, а если в линуксе, то та же библиотека, соответственно so. А если нужно и то и другое, в разных системах собирать чтоли?

В общем смотрите: моду игры, в который вы хотите поиграть, необходима специальная бинарная библиотека. Эта библиотека платформо-зависимая, так как содержит машинный код, а не какой-нибудь промежуточный байт-код, как в случае, с Java-библиотеками.

Следовательно, если вы хотите поиграть в мод на GNU/Linux, вам нужна game.so; если в MS Windows - game.dll. Если вы хотите играть там и там, нужны как game.so, так и game.dll. Разработчики модов, кстати, так и поступают, выкладывая моды в релиз с библиотеками под две-три архитектуры.

Компиляция в GNU/Linux сводится к банальному make с разрешением всех зависимостей. Сначала компилируется «Yamagi Quake II», потом необходимый мод. В вашем случае, проще всего скачать бинарную сборку «Yamagi Quake II» и библиотеки, скомпилированные мной, по ссылке выше (это в случае, если у вас x86_64). Если у вас x86, то скачиваете «Yamagi Quake II» для x86 и компилируете game.so необходимого мода.

Теперь насчёт сборки под MinGW. Лично я скомпилил библиотеки мода в оффтопике, но можно их скомпилировать и GNU/Linux, установив в него собственно, сам MinGW. Компиляция мода в MSYS/MinGW тоже проста. Вы запускаете оболочку MSYS, переходите в каталог с исходниками и выполняете make. А вот с компиляцией «Yamagi Quake II» в MSYS/MinGW всё гораздо сложнее, так как движок, в отличие от мода, требует гораздо больше библиотек, чем банальный «libc». Поэтому либо вы компилируете необходимые библиотеки вручную (нужно дофига времени и сил), либо скачиваете уже готовое окружение для сборки отсюда и компилируете мод в нём.
Поэтому лучше всего воспользуйтесь бинарной сборкой «Yamagi Quake II» для MS Windows, а скомпилить библиотеки мода можно самостоятельно.

EXL ★★★★★
()
Ответ на: комментарий от mazdai

автору советую yamagi-quake2

Автор, как я понял, собирает код модов Quake (rogue, zaero) под уже рабочий yamagi-quake2. Никто тут о некромантии и не говорил.

EXL ★★★★★
()
Ответ на: комментарий от cinyflo

Насчет ошибки:

src/header/shared.h:13:20: fatal error: assert.h: Нет такого файла или каталога

В Debian'е (?).

Это странная ошибка, так как «assert.h» - это часть libc, в качестве которой в GNU/Linux системах выступает glibc. А libc, обычно неотъемлемая часть компилятора.

Попробуйте найти этот хэдер самостоятельно, к примеру так:

exl@exl-Lenovo-G560e:~ > find /usr/ -name assert.h
/usr/include/assert.h
/usr/include/FLAC/assert.h
/usr/lib/syslinux/com32/include/assert.h

А затем посмотреть, откуда берет хедеры gcc при компиляции:

echo 'main(){}' > /tmp/dummy.c
gcc /tmp/dummy.c -v &> /tmp/dummy.log
grep -B5 '^ /usr/include' /tmp/dummy.log
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include

Если «assert.h» отсутствует, пакет libc-dev не установлен. Если он присутствует, но в выхлопе gcc путь до каталога с ним отсутствует - неправильно настроен/установлен компилятор.

EXL ★★★★★
()
Ответ на: комментарий от mazdai

Вам хорошо, я тоже переписал, если бы мог. А то одни мучения некроманта:

Вместо сохранёнки загружается демо (QuakeII)

Неофициальные дополнения Quake 2 в линуксе или Как открыть формат ssv

Yamagi: Quake 2: Zaero

cinyflo ★★★★★
() автор топика
Ответ на: комментарий от cinyflo

А то одни мучения некроманта

Это не некромантия. Проект Yamagi Quake II жив и активно развивается.
Ловите баги, пишите багрепорты, они пофиксят обязательно.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.