Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как собрать проект для gcc?  (Прочитано 8494 раз)
0 Пользователей и 1 Гость смотрят эту тему.
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« : 28-07-2011 18:39 » 

Собственно, сабж. Имеется комплект файлов и хидеров, а также makefile:

Код:
CC      = gcc
#PROF    = -p
NOCRYPT =

# Uncomment the two lines below if compiling on a Solaris box
#SOLARIS_FLAG = -Dsun -DSYSV
#SOLARIS_LINK = -lnsl -lsocket

#Uncomment the line below if you are getting a line like:
#interp.c:757: warning: int format, time_t arg (arg 7)
#TIME = -DTIMEFORMAT

#Uncomment the line below if you are getting implicit decleration of re_exec
#REG = -DREGEX

#Uncomment the line below if you are getting undefined re_exec errors
#NEED_REG = -lgnuregex

#Uncomment the line below if you are getting undefined crypt errors
#NEED_CRYPT = -lcrypt

#DBUGFLG = -DREQUESTS

#Uncomment the line below if you want a performance increase though beware
#your core files may not be as much of a benefit if you do.
#OPT_FLAG = -finline-functions -funroll-loops -fdefer-pop -fstrength-reduce

C_FLAGS = $(OPT_FLAG) -O -g3 -Wall -Wuninitialized $(PROF) $(NOCRYPT) $(DBUGFLG) -DSMAUG $(SOLARIS_FLAG) $(TIME) $(REG)
L_FLAGS = $(OPT_FLAG) $(PROF) $(SOLARIS_LINK) $(NEED_CRYPT)

#Uncomment the next three comments below if you want to use IMC
#USE_IMC    = -DUSE_IMC

#IMC_OFILES = imc.o imc-mail.o imc-interp.o imc-util.o imc-config.o \
#        imc-events.o imc-version.o imc-mercbase.o ice.o icec.o icec-mercbase.o

#IMC_CFILES = imc.c imc-mail.c imc-interp.c imc-util.c imc-config.c \
#        imc-events.c imc-version.c imc-mercbase.c ice.c icec.c icec-mercbase.c

O_FILES = act_comm.o act_info.o act_move.o act_obj.o act_wiz.o boards.o \
          build.o clans.o comm.o comments.o const.o db.o deity.o fight.o \
          handler.o hashstr.o ibuild.o ident.o interp.o magic.o makeobjs.o \
          mapout.o misc.o mpxset.o mud_comm.o mud_prog.o player.o polymorph.o \
          requests.o reset.o save.o shops.o skills.o special.o tables.o \
          track.o update.o grub.o stat_obj.o ban.o services.o planes.o \
          imm_host.o $(IMC_OFILES) colorize.o

C_FILES = act_comm.c act_info.c act_move.c act_obj.c act_wiz.c boards.c \
          build.c clans.c comm.c comments.c const.c db.c deity.c fight.c \
          handler.c hashstr.c ibuild.c ident.c interp.c magic.c makeobjs.c \
          mapout.c misc.c mpxset.c mud_comm.c mud_prog.c player.c polymorph.c \
          requests.c reset.c save.c shops.c skills.c special.c tables.c \
          track.c update.c grub.c stat_obj.c ban.c services.c planes.c \
          imm_host.c $(IMC_CFILES) colorize.c

H_FILES = mud.h bet.h imc-config.h imc-mercbase.h imc-mercdefs.h imc.h \
          ice.h icec.h icec-mercbase.h

all:
make smaug

smaug: $(O_FILES)
rm -f smaug
$(CC) $(L_FLAGS) $(USE_IMC) -o smaug $(O_FILES)
chmod g+w smaug
chmod a+x smaug
chmod g+w $(O_FILES)

.c.o: mud.h
$(CC) -c $(C_FLAGS) $(USE_IMC) $<

clean:
rm -f *.o smaug *~

поставил MinGW, после ряда танцев с бубном он стал выдавать:

Код:
C:\dev\projects\arda\Vetka\dist\src>mingw32-make
make smaug
MAKE Version 5.2  Copyright (c) 1987, 1998 Inprise Corp.
Fatal: 'act_comm.o' does not exist - don't know how to make it
mingw32-make: *** [all] Error 1

я его понимаю - либы с расширением *.о генерит линуксовый gcc. Возможно ли как-то собрать проект под виндой?
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 28-07-2011 18:45 » 

Игорь Он говорит, что нет правила, как он может сделать объектный файл.
Кстати, ты уверен, что это Makefile под винду?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 28-07-2011 18:50 » 

нет, я уверен, что это makefile для линуксового gcc.

Вить, подскажи. есть набор файлов. в результате нужно получить файл smaug.exe, которого в исходниках нет. я так понимаю, его собирает линковщик из тех самых *.o файлов. это можно как-то сделать?

Добавлено через 2 минуты и 9 секунд:
и еще вопрос. что это за ошибка:

Код:
collect2: ld returned 1 exit status

ее выдает gcc при попытке скомпилировать файл.
« Последнее редактирование: 28-07-2011 18:52 от x77 » Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 28-07-2011 19:09 » 

Там просто unix-like команды внутри зашиты, поэтому я и спросил.
Вообше Makefile строится довольно лекго
Первая строчка
<OBJECT>: <DEPEND>
<OBJECT> это то, что ты хочеш получить.
<DEPEND> Что нужно, для того, чтобы <OBJECT> получился. Тут перечисляются все файлы зависимости через пробел
Вторая строчка как это можно получить (действие). Но обязательно нужно предварять действие табуляцией. (Клавиша Tab)

Такой большой проект переписывать все правила вручную слишком муторно. Поэтому сушествуют всякие программы помошники. Типа CMake. Я лично использую qmake из Qt

Кстати <OBJECT> также может быть и внешней командой. Например в твоем файле clean:

В твоем случае я думаю, можно ручками подправить действия и константы Например
1 строка CC      = gcc
  gcc нужно заменить на тот компилятор, который эквивалентен gcc в MinGW
Переменные C_FLAGS L_FLAGS это опции компиляции. Соответвсенно нужно заменить на нужные.
Раздел all: там поменять make на соответсвующее.
chmod и rm тоже поменять.


Добавлено через 2 минуты и 31 секунду:
и еще вопрос. что это за ошибка:

Код:
collect2: ld returned 1 exit status

ее выдает gcc при попытке скомпилировать файл.
Покажи строчку компиляции.
« Последнее редактирование: 28-07-2011 19:11 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 28-07-2011 19:26 » 

там куча ошибок, типа undefined reference to `WinMain@16. и потом заканчивается вот этой.
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 28-07-2011 19:29 » 

Ну написано, что gcc выдал код ошибки 1. Т.е. он не отработал нормально. Все что не 0 это ошибка.
Кстати  undefined reference это уже линковшик ругается Улыбаюсь Т.е. сама компиляция прошла.

Добавлено через 3 минуты и 16 секунд:
Игорь попробуй простой Hello World собрать в gcc. Если он собирается нормально, то gcc проинсталирован нормально.
« Последнее редактирование: 28-07-2011 19:32 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 28-07-2011 19:33 » 

угу, попробую, но уже завтра, спасиб!
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 28-07-2011 20:57 » 

Игорь это оно? h**p://www.gammon.com.au/welcome.html Если да, то в Download там есть виндовс версия.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #8 : 28-07-2011 21:49 » 

да. это оно, спасибо еще раз!
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines