|
|
  |
Научите меня пользоваться GCC |
|
|
|
Mar 24 2007, 21:57
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Hi, All!
Поставил OpenAT (кто не знает - среда для разработки приложений для GSM модулей от Wavecom). И не могу собрать даже тестовые примеры. То есть, не могу разобраться, как это сделать, что запускать. Project Wizard создает каталог проекта, в котором наличествуют исходники на С, h и make файлы. Теперь это добро надо скомпилировать и собрать с помощью GCC (поставился в составе OpenAT). А как? В каталоге проекта создается файл LoadIde.bat, он запускает какой-то bash, в котором что-то нужно вводить в командной строке. Что это такое, и имеет ли оно какое-нибудь отношение к компиляции? В каталоге GCC есть каталог BIN, и есть ARM-ELF\BIN, в каждом множество исполняемых файлов, что из этого нужно запускать для компиляции? И как, поскольку явным образом не запускается ни один exe'шник, все говорят что не найден какой-то cygwin1.dll. Я надеялся хоть они будут выдавать подсказку по командной строке... Есть man'ы, говорят, там документация. Но, опять же, чем их смотреть под Windows? В документации про процесс компиляции не нашел ни слова, исключительно про инсталляцию и, собс-но, программирование.
Ни с Linux, ни с GCC никогда дела не имел, помогите, уже несколько дней бьюсь.
|
|
|
|
|
Mar 25 2007, 01:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Для начала - сюда http://gcc.gnu.org/onlinedocs/. Цитата он запускает какой-то bash, в котором что-то нужно вводить в командной строке. Что это такое, и имеет ли оно какое-нибудь отношение к компиляции? bash - юниксовый прародитель комманд.кома, возможности у него побогаче будут, поэтому и используется. Если 1-2 файла то можно и из под Far. Цитата не запускается ни один exe'шник, все говорят что не найден какой-то cygwin1.dll. Это уже серьезнее. Эта dll-ка отвечает на юниксовые вызовы gcc. Должна где-то в путях присутствовать. Возможно цепляется через LoadIde.bat Цитата 3. вот в этом bash'э надо ввести команду "make -f makefile" , в ответ на эту команду утилита make.exe засосет файл makefile и будет выполнять его - тоесть команды компиляции с помощу GCC и сборку проекта. Вот тут я камарада klenа немножко подкорректирую. Команда make по умолчанию ищет файл makefile. А вот если имя другое тогда через ключик -f makefile это скрипт компиляции, т.е. то что не хочеться вводить каждый раз в командной строке - имена файлов учаснегов, пути к компилятору и утилитам, все многочисленные ключи. Там своя система меток и макросов, но разобраться в ней несложно. По команде make он будет исполнятся. Внимание важный момент. Борланд вставляет в свои продукты свой make, нихрена со стандартным не совместимый.И естесно прописывает его глобально. Обязательно изолировать борландовский make от gcc. Доброй охоты
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 26 2007, 17:52
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата(klen @ Mar 25 2007, 00:55)  3. вот в этом bash'э надо ввести команду "make -f makefile" , в ответ на эту команду утилита make.exe засосет файл makefile и будет выполнять его - тоесть команды компиляции с помощу GCC и сборку проекта. Make запускается, спасибо. Но теперь оно говорит make: *** No targets. Stop. А это что значит?
|
|
|
|
|
Mar 26 2007, 20:17
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата make: *** No targets. Stop. В мэйкфайле может быть несколько сценариев, отличающихся target-ом, т.е. целью компиляции. Самые распостранненные all(побилдить все), clean(удалить результаты) install (понятно), program (прошивка). Тарджеты в тексте выделены как ассемблерные метки - с начала строки и с двоеточием - найти легко. Скорее всего мэйк будет выглядеть: Код make all или make -f custom_makefile all
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 26 2007, 21:40
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата(beer_warrior @ Mar 26 2007, 21:17)  В мэйкфайле может быть несколько сценариев, отличающихся target-ом, т.е. целью компиляции. Самые распостранненные all(побилдить все), clean(удалить результаты) install (понятно), program (прошивка). Тарджеты в тексте выделены как ассемблерные метки - с начала строки и с двоеточием - найти легко. Хм... Нет там никаких таргетов... Мне дико неудобно, но может взглянете на вложение? Этот make создан автоматически ProjectWizard'ом. Два сишных исходника, которые там указаны, тоже созданы. Каталоги с библиотеками и ОС тоже вроде бы есть. Как ему указать, что надо сделать прошивку? Цитата(beer_warrior @ Mar 26 2007, 21:17)  Скорее всего мэйк будет выглядеть: Код make -f custom_makefile all На это оно говорит make: *** No rule to make target `all'. Stop. Не получается файлом вставить, вот содержимое Код #------------------------------------------------------------------------------ # Include this file only one time #------------------------------------------------------------------------------ ifndef MAKEFILE_INCLUDED MAKEFILE_INCLUDED = YES
#------------------------------------------------------------------------------ # Library module (lib) or Binary module (bin) #------------------------------------------------------------------------------ PROCESS = bin
#------------------------------------------------------------------------------ # Set the used Api for Open-AT : ADL or OAT (standard Open-AT API) #------------------------------------------------------------------------------ API = ADL
#------------------------------------------------------------------------------ # Set GCC Call Stack factor (to increase Call Stack size automatically for GCC compiler) #------------------------------------------------------------------------------ GCC_STACK_SIZE_FACTOR = 3
#------------------------------------------------------------------------------ # List of source files of the library or executable to generate #------------------------------------------------------------------------------ SRC_C_LIST = \ main.c \ portmanager.c \
#------------------------------------------------------------------------------ # List of assembler files of the library or executable to generate #------------------------------------------------------------------------------ SRC_ASM_LIST = \
#------------------------------------------------------------------------------ # List of objects real names to use for making binary file #------------------------------------------------------------------------------ EXTERNAL_OBJ_LIST = \
#------------------------------------------------------------------------------ # List of objects prefixed names to use for making binary file #------------------------------------------------------------------------------ PREFIXED_OBJ_LIST = \
#------------------------------------------------------------------------------ # List of libraries real names to use for making binary file #------------------------------------------------------------------------------ EXTERNAL_LIB_LIST = \
#------------------------------------------------------------------------------ # List of libraries prefixed names to use for making binary file, inherited from OS #------------------------------------------------------------------------------ PREFIXED_LIB_LIST = \ wmadl_4.10.5.2.0
#------------------------------------------------------------------------------ # List of libraries prefixed names to use for making binary file #------------------------------------------------------------------------------ PREFIXED_LIB_LIST += \ MultiApp \
#------------------------------------------------------------------------------ # Plug-in used libraries list #------------------------------------------------------------------------------ PREFIXED_LIB_LIST += \
#------------------------------------------------------------------------------ # Compilation flags #------------------------------------------------------------------------------ PP_OPT_COMMON = \ __OAT_API_VERSION__=410 \
#------------------------------------------------------------------------------ # Path for code C files #------------------------------------------------------------------------------ PATH_C = \ ../../src \
#------------------------------------------------------------------------------ # Path for code ASM files #------------------------------------------------------------------------------ PATH_ASM = $(PATH_C)
#------------------------------------------------------------------------------ # Path for include C files #------------------------------------------------------------------------------ PATH_H = \ ../../inc \ ../../../Libraries/MultiApp/itf \
#------------------------------------------------------------------------------ # Path for include C files #------------------------------------------------------------------------------ C_OPTIONS += \
SYSTEM_PATH_LIST = \
#------------------------------------------------------------------------------ # Path for include C files, inherited from OS #------------------------------------------------------------------------------ PATH_H += \ D:/TDATA/OpenAT/OS/4.10.10/ADL/basic \ D:/TDATA/OpenAT/OS/4.10.10/ADL/itf \
#------------------------------------------------------------------------------ # Path for include C files, inherited from Plug-in Libraries #------------------------------------------------------------------------------
#------------------------------------------------------------------------------ # Path for include ASM files #------------------------------------------------------------------------------ PATH_I = $(PATH_H)
#------------------------------------------------------------------------------ # Absolute paths for Object files #------------------------------------------------------------------------------ PATH_EXT_OBJ = \
#------------------------------------------------------------------------------ # Root paths for Object files #------------------------------------------------------------------------------ PATH_ROOT_OBJ = \
#------------------------------------------------------------------------------ # Absolute paths for Library files, inherited from OS #------------------------------------------------------------------------------ PATH_EXT_LIB = \ D:/TDATA/OpenAT/OS/4.10.10/ADL \
THEMAINOSLIB = \ D:/TDATA/OpenAT/OS/4.10.10/ADL/$(COMPILER_PREFIX)wmadl_4.10.5.2.0.lib
#------------------------------------------------------------------------------ # Absolute paths for Plug-in Library files #------------------------------------------------------------------------------
#------------------------------------------------------------------------------ # Absolute paths for Library files #------------------------------------------------------------------------------ PATH_EXT_LIB += \
#------------------------------------------------------------------------------ # Root paths for Library files #------------------------------------------------------------------------------ PATH_ROOT_LIB = \ ../../../Libraries/MultiApp \
#------------------------------------------------------------------------------ # Memory link addresses #------------------------------------------------------------------------------ ROBASE = 0x00210000 RWBASE = 0x180C0000
endif
Сообщение отредактировал sz36 - Mar 26 2007, 21:42
|
|
|
|
|
Mar 26 2007, 23:33
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Вброшу рабочий примерчег: Код ################################################################# ## This Makefile Exported by MinGW Developer Studio ## Copyright (c) 2002-2004 by Parinya Thipchart #################################################################
ifneq (,$(findstring Release, $(CFG))) override CFG = Release else override CFG = Debug endif
PROJECT = test2 CC = "C:\_tools\MinGW\bin\g++.exe"
ifeq ($(CFG),Debug) OBJ_DIR = Debug OUTPUT_DIR = Debug TARGET = test2.exe C_INCLUDE_DIRS = C_PREPROC = -DHAVE_W32API_H -D__WXMSW__ -D__WXDEBUG__ CFLAGS = -pipe -Wno-ctor-dtor-privacy -Wall -g2 -O0 -fno-rtti -fno-exceptions RC_INCLUDE_DIRS = RC_PREPROC = --define __WXMSW__ --define __WXDEBUG__ RCFLAGS = LIB_DIRS = LIBS = -lwxmsw25d_core -lwxbase25d -lwxtiffd -lwxjpegd -lwxpngd -lwxzlibd -lwxregexd -lwxexpatd -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32 LDFLAGS = -pipe -mthreads, -Wl,--subsystem,windows -mwindows endif
ifeq ($(CFG),Release) OBJ_DIR = Release OUTPUT_DIR = Release TARGET = test2.exe C_INCLUDE_DIRS = C_PREPROC = -DHAVE_W32API_H -D__WXMSW__ CFLAGS = -pipe -Wno-ctor-dtor-privacy -Wall -g0 -O2 -fno-rtti -fno-exceptions RC_INCLUDE_DIRS = RC_PREPROC = --define __WXMSW__ RCFLAGS = LIB_DIRS = LIBS = -lwxmsw25_core -lwxbase25 -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregex -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32 LDFLAGS = -pipe -s -mthreads, -Wl,--subsystem,windows -mwindows endif
ifeq ($(OS),Windows_NT) NULL = else NULL = nul endif
SRC_OBJS = \ $(OBJ_DIR)/app.o \ $(OBJ_DIR)/main.o
define build_target @echo Linking... @$(CC) -o "$(OUTPUT_DIR)\$(TARGET)" $(SRC_OBJS) $(LIB_DIRS) $(LIBS) $(LDFLAGS) endef
define compile_source @echo Compiling $< @$(CC) $(CFLAGS) $(C_PREPROC) $(C_INCLUDE_DIRS) -c "$<" -o "$@" endef
.PHONY: print_header directories
$(TARGET): print_header directories $(SRC_OBJS) $(build_target)
.PHONY: clean cleanall
cleanall: @echo Deleting intermediate files for 'test2 - $(CFG)' -@del $(OBJ_DIR)\*.o -@del "$(OUTPUT_DIR)\$(TARGET)" -@rmdir "$(OUTPUT_DIR)"
clean: @echo Deleting intermediate files for 'test2 - $(CFG)' -@del $(OBJ_DIR)\*.o
print_header: @echo ----------Configuration: test2 - $(CFG)----------
directories: -@if not exist "$(OUTPUT_DIR)\$(NULL)" mkdir "$(OUTPUT_DIR)" -@if not exist "$(OBJ_DIR)\$(NULL)" mkdir "$(OBJ_DIR)"
$(OBJ_DIR)/app.o: ../TEST_SOFT/app.cpp \ ../TEST_SOFT/app.h \ ../TEST_SOFT/main.h $(compile_source)
$(OBJ_DIR)/main.o: ../TEST_SOFT/main.cpp \ ../TEST_SOFT/main.h \ ../TEST_SOFT/app.h $(compile_source)
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 27 2007, 11:47
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата(beer_warrior @ Mar 27 2007, 00:33)  Вброшу рабочий примерчег: Спасибо! [..с тоской..] Пошел изучать формат make-файла... Интуитивно вроде бы понятно, но если ткнете носом, где есть оное описание в доступной для тупых форме, то мои границы не будут иметь благодарности :-)
|
|
|
|
|
Jun 28 2007, 12:25
|
Группа: Новичок
Сообщений: 7
Регистрация: 27-06-07
Пользователь №: 28 749

|
Цитата(klen @ Mar 27 2007, 01:13)   медленно, но движуха есть! ...к скомпиляному коду  OpenAT мейкфайлы кушает вейкомавскйи wmmake, ужасное убожище по сравнению с нормальным мейком
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|