Member 13244531 Ответов: 1

Как мне построить этот исходный код?


Что мне нужно для создания этого кода и как это сделать... спасибо за любую помощь
Ссылка на код ниже
https://www.libsdl.org/projects/doom/

Я хочу построить оригинальный порт а не Порт lxdoom на этом сайте

Что я уже пробовал:

Я пробовал только компилировать его но безуспешно

David_Wimbley

Инструкции кажутся мне довольно ясными.

первоначальный порт:
Распакуйте, соберите, а затем перейдите в каталог, содержащий ваш DOOM! wad файл и запустите встроенный исполняемый файл "sdldoom"

Порт LxDoom:
Распакуйте, соберите, скопируйте данные/boomlump.wad вместе с вашим оригинальным DOOM! wad-файл в каталог ~/.lxdoom/, а затем запустите встроенный исполняемый файл "lsdldoom".
Если вам нужна музыка, убедитесь, что вы установили файлы патча робости в /usr/local/lib (на UNIX)

Member 13244531

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

1 Ответов

Рейтинг:
1

Jochen Arndt

Вы должны использовать общие шаги при создании приложения Linux (или при использовании, например Компилятор MinGW в Windows).

Первый шаг-распаковка исходного кода:

tar -xzvvf sdldoom-1.10.tar.gz
Затем взгляните на распакованные файлы, если там есть какой-то README файл с инструкциями по сборке. Если нет, поищите общие файлы сборки.

Если есть autogen.sh файл, выполни это
./autogen.sh

В противном случае, если есть configure.sh файл:
./configure.sh

Оба сценария будут создавать некоторые файлы сборки и печатать сообщения, когда что-то необходимое для процесса сборки отсутствует. Если это так, вы должны сделать то, что вам говорят сообщения, например, установить необходимые библиотеки и инструменты сборки, а затем снова выполнить сценарий.

В любом случае (даже если ничего из вышеперечисленного нет) должна быть какая-то файл Makefile, Который используется для управления конечным
make
это позволит построить исполняемый файл.

Наконец, вы можете установить (как root) с помощью
make install
или просто запустите исполняемый файл.


Member 13244531

Спасибо, что помогли мне, но не могли бы вы перечислить команды mingw, которые мне нужно знать, чтобы выполнить эти файлы, например, для компиляции исходного файла .c в mingw я делаю это так

г++ Здравствуйте.с-о hello.exe

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

Jochen Arndt

Вам не нужно выполнять компилятор вручную. Это делается путем выполнения make в пределах каталога, содержащего файл Makefile.

Member 13244531

Хорошо, мой вопрос все еще заключается в том, что это за команда для выполнения файла make.... Я имею в виду, что не могу идти дальше, не зная команды......

Jochen Arndt

Команда такова make!

Member 13244531

Я использую mingw в windows, так что какие шаги в mingw мне нужно сделать, потому что вы сделали это выше, но tar не является командой в строке mingw commmand, так что какие команды мне нужно знать шаг за шагом, пожалуйста, дайте их мне спасибо... Было бы проще ответить на мой вопрос, если бы вы предоставили пошаговые команды в mingw для windows для выполнения исходного кода...

Jochen Arndt

Вы должны установить tar, если его нет (просто Google for mingw tar), или распаковать архив в windows (например, с помощью 7Zip), если это еще не сделано.

Мое решение-это пошаговая инструкция:
- Скачать (предполагается, что вы уже сделали это)
- Распаковывать
- Читать
- Конфигурировать
- Строить
- Устанавливать
Я не могу дать больше подробностей, потому что это специфика проекта.

Member 13244531

У меня есть make, установленный и готовый к выполнению makefile, но make не может найти никаких целей, поэтому makefile.in и make-файл.я думаю, что am-это не makefile, но какую команду мне нужно ввести, я готов, у меня есть все жесткие материалы, установленные и готовые.... Пожалуйста, кто-нибудь, помогите мне с этим, пожалуйста...

Member 13244531

Все, что мне нужно сделать, это использовать вызов исходного каталога и использовать dir для распаковки файлов, поэтому мой вопрос заключается в том, что нет никакого makefile, просто makefile.В или makefile.am таким образом, gnumake не может нацелиться на эти файлы Makefile, так что же мне здесь нужно делать?...

Jochen Arndt

Вы должны следовать моим инструкциям относительно "настройки".
Этот шаг создаст окончательный Makefile(ы) из файлов .in и .am.

В зависимости от проекта, возможно, также потребуется перейти в подкаталог (обычно называемый "src") перед выполнением make. Проверьте содержимое основного каталога после выполнения сценария настройки. Тогда должен быть файл Makefile. Если нет, проверьте, есть ли какие-либо подкаталоги, содержащие этот файл. Перейдите в этот каталог и выполните команду make Если ниже есть еще каталоги с файлом Makefile, то обычно нет необходимости делать это снова там, потому что те, кто находится в верхнем каталоге, должны это делать . Но это опять-таки зависит от проекта.

Member 13244531

Хорошо я попробую и дам вам знать

Member 13244531

Эй вот что я получаю когда настраиваю его сейчас

загрузка кэша ./config.cache
проверка наличия установки, совместимой с BSD... /usr/bin/install -c
проверка того, является ли среда сборки нормальной... да
проверка того, устанавливает ли make ${MAKE}... да
проверка на работоспособность aclocal... найдено
проверка на работоспособность autoconf... найдено
проверка на работоспособность automake... найдено
проверка на работоспособность автозаголовка... найдена
проверка на работоспособность makeinfo... найдено
проверка наличия наборов make ${MAKE}... (кэшируется) да
проверка на gcc... gcc
проверка того, работает ли компилятор C (gcc )... да
проверка того, является ли компилятор C (gcc ) кросс-компилятором... нет
проверка того, используем ли мы GNU C... да
проверка того, принимает ли gcc-g... да
проверка наличия установки, совместимой с BSD... /usr/bin/install -c
проверка на sdl-config... нет
проверка на SDL - версию >= 1.0.1... нет
*** Не удалось найти сценарий sdl-config, установленный SDL
*** Если SDL был установлен в PREFIX, убедитесь, что PREFIX/bin находится в
*** ваш путь или установите переменную окружения SDL_CONFIG в значение
*** полный путь к sdl-config.
настройка: ошибка: *** SDL версии 1.0.1 не найден!

Так как же мне сделать эту штуку sdl?..

Jochen Arndt

Вы должны установить его в соответствии с веб-сайтом, с которого вы скачали:
"Требуется: SDL 1.0"

Поэтому перейдите на веб-сайт SDL, выберите источник для вашей среды (Windows, MinGW), загрузите и повторите шаги из моего решения для этого пакета.

Member 13244531

Хорошо, я получил версию mingw 1.0.1 sdl, но что странно, я получаю эту проблему теперь я пошел в свои предварительные системные настройки и пошел в переменные среды и установил путь к файлу sdl-config, но когда я настраиваю, я получаю эту проблему мой журнал ниже

загрузка кэша ./config.cache
проверка наличия установки, совместимой с BSD... /usr/bin/install -c
проверка того, является ли среда сборки нормальной... да
проверка того, устанавливает ли make ${MAKE}... да
проверка на работоспособность aclocal... найдено
проверка на работоспособность autoconf... найдено
проверка на работоспособность automake... найдено
проверка на работоспособность автозаголовка... найдена
проверка на работоспособность makeinfo... найдено
проверка наличия наборов make ${MAKE}... (кэшируется) да
проверка на gcc... gcc
проверка того, работает ли компилятор C (gcc )... да
проверка того, является ли компилятор C (gcc ) кросс-компилятором... нет
проверка того, используем ли мы GNU C... да
проверка того, принимает ли gcc-g... да
проверка наличия установки, совместимой с BSD... /usr/bin/install -c
проверка для SDL-config с... /с/программные файлы (х86)/SDL_MINGW32/СДЛ-1.0.1/ОГРН/СДЛ-конфиг
проверка SDL - версии >= 1.0.1... configure: строка 1181: /c/Program: нет такого файла или каталога
настройка: строка 1182: /c/Program: нет такого файла или каталога
настройка: строка 1185: /c/Program: нет такого файла или каталога
настройка: строка 1187: /c/Program: нет такого файла или каталога
настройка: строка 1189: /c/Program: нет такого файла или каталога
нет
*** Не удалось запустить тестовую программу SDL, проверив, почему...
*** Тестовая программа не была скомпилирована или связана. Смотрите файл config.log для получения
*** точная ошибка, которая произошла. Обычно это означает, что SDL был установлен неправильно
*** или что вы переместили SDL с момента его установки. В последнем случае вы
*** может хотите отредактировать СДЛ-конфигурационный скрипт: /с/программные файлы (х86)/SDL_MINGW32/СДЛ-1.0.1/ОГРН/СДЛ-конфиг
настройка: ошибка: *** SDL версии 1.0.1 не найден!

Jochen Arndt

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

Member 13244531

Не могли бы Вы привести мне пример пожалуйста

Member 13244531

Нужно ли мне цитировать его в пути enviroment varibles или в файле sdl-config или nether, пожалуйста, помогите....

Jochen Arndt

Вероятно, в обоих случаях. Просто попробуй. Я не могу знать, не делая этого сам.

Member 13244531

в файле sdl-config какую строку кода я ищу, чтобы добавить путь с двойными кавычками

#!/bin/sh

префикс=/usr/local/cross-tools/i386-mingw32
exec_prefix=${префикс}
exec_prefix_set=нет

использование="\
Использование: СДЛ-конфиг [--префикс[=кат]] [--выполнить-префикс[=кат]] [версия--] [--библиотеки] [--переменные CFLAGS]"

если тест $# -eq 0; то
echo "${usage}" 1>&2
выход 1
fi

while test $# -gt 0; do
Кейс "$ 1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//" ;;
*) optarg= ;;
эсок

случае $1 в
--префикс=*)
префикс=$optarg
если тест exec_prefix_set $ = "нет"; затем
exec_prefix=$optarg
fi
;;
--префикс)
echo $prefix
;;
--exec-префикс=*)
exec_prefix=$optarg
exec_prefix_set=да
;;
--exec-префикс)
Эхо $exec_prefix
;;
--версия)
Эхо 1.0.0
;;
--с CFLAGS)
если test ${prefix}/include != /usr/include ; то
includes=-I${prefix}/include
fi
echo $includes -I{prefix}/include/SDL -Dmain=SDL_main
;;
--библиотеки)
libdirs=-L${exec_prefix}/lib
echo $libdirs -lmingw32 -lSDLmain -lSDL -luser32 -lgdi32 -lwinmm -ldxguid -mwindows
;;
*)
echo "${usage}" 1>&2
выход 1
;;
эсок
сдвиг
сделано

Member 13244531

Это то, что мой config.log mabe это поможет вам в дальнейшем понять, что я делаю неправильно

Этот файл содержит все сообщения, созданные компиляторами в то время как
запуск configure, чтобы помочь отладке, если configure делает ошибку.

настройка:563: проверка наличия установки, совместимой с BSD
настройка:616: проверка работоспособности среды сборки
configure:673: проверка наличия наборов make ${MAKE}
настройка:719: проверка работы aclocal
настройка:732: проверка работы autoconf
настройка:745: проверка работоспособности automake
настройка:758: проверка работы автозагрузчика
настройка:771: проверка работы makeinfo
configure:787: проверка наличия наборов make ${MAKE}
настройка:816: проверка gcc
configure:929: проверка работы компилятора C (gcc )
настройка:945: gcc -o conftest conftest.c 1>&5
настроить:942:1: предупреждение: возврат значения по умолчанию тип для типа 'int' [-Wimplicit-инт]
main(){return(0);}
^
configure:971: проверка того, является ли компилятор C (gcc ) кросс-компилятором
configure:976: проверка того, используем ли мы GNU C
настройка:985: gcc -E conftest.c
настройка:1004: проверка того, принимает ли gcc-g
настройка:1047: проверка наличия установки, совместимой с BSD
configure:1142: проверка наличия sdl-config
настройка:1177: проверка наличия SDL - версии >= 1.0.1
настройка:1259: gcc -o conftest -g -O2 conftest.c 1>&5
configure:1206:21: fatal error: SDL/SDL.h: нет такого файла или каталога
компиляция завершена.
настройка: неудачная программа была:
#строка 1201 "настройка"
#включить "confdefs.h"

#включить <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sdl sdl.h="">

обуглить*
my_strdup (char *str)
{
char *new_str;

если (str)
{
new_str = malloc ((strlen (str) + 1) * sizeof(char));
strcpy (new_str, str);
}
еще
new_str = NULL;

вернуться new_str;
}

тап_п ()
{
инт мажор, минор, микро;
типа char *tmp_version;

системе ("сенсорный конф.sdltest");

/* HP/UX 9 (%@#!) записывает в строки sscanf */
tmp_version = my_strdup("1.0.1");
если (использования sscanf(tmp_version, "%д%д.%д", &ампер;майор, &ампер;незначительные, µ) != 3) {
printf("%s, bad version string\n", "1.0.1");
выход(1);
}

если ((> major) ||
(( == майор) и усилитель; & ( &ГТ; незначительные)) ||
(( == майор) и усилитель; & ( == несовершеннолетней) и усилитель; & ( &ГТ;= микро)))
{
возвращает 0;
}
еще
{
е("\п*** 'СДЛ-конфиг --версия' вернулся на %D.%д.%D, но минимальная версия\Н", , , );
функции printf("*** СДЛ требуется на %D.%д.%д. Если sdl-config верен, то это\n", major, minor, micro);
printf("*** лучше всего обновить до требуемой версии.\n");
printf("*** если sdl-config был неправильным, установите переменную окружения SDL_CONFIG\n");
printf("*** чтобы указать на правильную копию sdl-config и удалить файл\n");
printf("*** config.cache перед повторным запуском configure\n");
возврат 1;
}
}


настройка:1303: gcc -o conftest -g -O2 conftest.c 1>&5
configure:1296:21: fatal error: SDL/SDL.h: нет такого файла или каталога
компиляция завершена.
настройка: неудачная программа была:
#строка 1293 "настройка"
#включить "confdefs.h"

#включить <stdio.h>
#include <sdl sdl.h="">

тап_п() {
возвращает 0;
; возврат 0; }

Jochen Arndt

configure:1206:21: fatal error: SDL/SDL.h: нет такого файла или каталога

Вы должны указать каталог include, в котором находится этот файл. Он должен быть добавлен где-то (переменная окружения или как configure.sh параметр).

Member 13244531

Как мне это сделать configure.sh метод, потому что это не переменная секция окружающей среды.. извините, что беспокою вас так сильно, но это немного трудно для меня, но я почти там ... пожалуйста, помогите

Member 13244531

Это что в Мои настройки.в файл Мабе это поможет более

dnl обработает этот файл с помощью autoconf, чтобы создать сценарий настройки.
AC_INIT(ФАЙЛ README.б)

настройка ДНЛ к сожалению
AM_INIT_AUTOMAKE(sdldoom, 1.10)

dnl Проверка наличия инструментов

AC_PROG_MAKE_SET
AC_PROG_CC
AC_PROG_INSTALL

dnl проверка на SDL
SDL_VERSION=1.0.1
AM_PATH_SDL($SDL_VERSION,
:,
AC_MSG_ERROR([*** SDL version $SDL_VERSION не найден!])
)
CFLAGS="$CFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"

# Наконец-то создайте все сгенерированные файлы
AC_OUTPUT([
файл Makefile
])

Member 13244531

Вот конфигурационный файл mabe это поможет вам больше понять

#! /bin/sh

# Угадайте значения для системно-зависимых переменных и создайте Makefile-файлы.
# Генерируется автоматически с помощью autoconf версии 2.13
# Авторское Право (C) 1992, 93, 94, 95, 96 Фонд Свободного Программного Обеспечения, Inc.
#
# Этот сценарий настройки является свободным программным обеспечением; Фонд свободного программного обеспечения
# дает неограниченное разрешение на копирование, распространение и изменение его.

# По умолчанию:
ac_help=
ac_default_prefix=/usr/local
# Любые дополнения от configure.in:
ac_help="$ac_help
--with-sdl-prefix=PFX Prefix, где установлен SDL (необязательно)"
ac_help="$ac_help
--с-СДЛ-выполнить-префикс=префикс pfx-файл exec для которой установлен SDL (опционально)"
ac_help="$ac_help
--disable-sdltest не пытайтесь скомпилировать и запустить тестовую SDL-программу"

# Инициализируйте некоторые переменные, заданные параметрами.
# Переменные имеют те же имена, что и параметры, с
# тире сменилось подчеркиванием.
сборка=нет
cache_file=./config.cache
exec_prefix=нет
хозяина=нет
no_create=
nonopt=нет
no_recursion=
префикс=нет
program_prefix=нет
program_suffix=нет
program_transform_name=Х,Х,Х,
тихий=
сайт=
каталог исходного кода=
цель=нет
многословный=
x_includes=нет
x_libraries=нет
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datadir='${prefix}/share'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'

# Инициализируйте некоторые другие переменные.
подкаталоги=
MFLAGS= MAKEFLAGS=
SHELL=${CONFIG_SHELL-/bin/sh}
# Максимальное количество строк, помещаемых в оболочку здесь документа.
ac_max_here_lines=12

ac_prev=
для ac_option
делать

# Если предыдущему параметру требуется аргумент, назначьте его.
если test -n "$ac_prev"; то
eval "$ac_prev=\$ac_option"
ac_prev=
продолжить
fi

случай "$ac_option" в
-*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//" ;;
*) ac_optarg= ;;
эсок

# Примите важные параметры настройки Cygnus, чтобы мы могли диагностировать опечатки.

случай "$ac_option" в

-переменные bindir | --переменные bindir | --Бинди | --персонализация | --Бен | --Би)
ac_prev=переменные bindir ;;
-переменные bindir=* | --переменные bindir=* | --Бинди=* | --персонализация=* | --Бен=* | --Би=*)
bindir="$ac_optarg" ;;

-дизайн | --дизайн | --здания | --Буй | --бу)
ac_prev=сборка ;;
-построить=* | --строить=* | --зда=* | --Буй=* | --бу=*)
построить="$ac_optarg" ;;

-кэш-файл | --кэш-файл | --кэш-фильм | --кэш-Fi интернет \
| --кэш-Ф | --кэш- | --кэш | --Кать | --САС | - ка | --с)
ac_prev=cache_file ;;
-кэш-файла=* | --кэш-файла=* | --кэш-фильм=* | --кэш-Fi интернет=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
cache_file="$ac_optarg" ;;

-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
ac_prev=переменной datadir ;;
-переменной datadir=* | --переменной datadir=* | --datadi=* | --datad=* | --данные=* | --дат=* \
| --окружной прокурор=*)
datadir="$ac_optarg" ;;

-отключить-* | --отключить-*)
ac_feature=`Эхо $ac_option|СЭД -е 'с/-*отключить-//"
# Отклонение имен, которые не являются допустимыми именами переменных оболочки.
если тест -Н "`Эхо $ac_feature| Е С/[-а-Яа-команды Z0-9_]//г""; затем
{ Эхо "настроить: ошибка: $ac_feature: недопустимое имя объекта" 1&ГТ;&амп;2; покинуть 1; }
fi
ac_feature=`Эхо $ac_feature| Е С/-/_/г"
eval "enable_${ac_feature}=нет" ;;

-включить-* | --включить-*)
ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//"
# Отклонение имен, которые не являются допустимыми именами переменных оболочки.
если test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g""; то
{ Эхо "настроить: ошибка: $ac_feature: недопустимое имя объекта" 1&ГТ;&амп;2; покинуть 1; }
fi
ac_feature=`Эхо $ac_feature| Е С/-/_/г"
случай "$ac_option" в
*=*) ;;
*) ac_optarg=да ;;
эсок
ивала "enable_${ac_feature}='$ac_optarg'" ;;

-exec-prefix | --exec_prefix | --exec-pre