LINUX.ORG.RU

Не собирается прога под ARM


0

1

Есть программулина, собирающая модуль к ядру: вот ее Makefile:

MODULE_NAME = upg_lib
APP_NAME=afl_lib
OBJS = main.o lib_upg.o

obj-m    := $(MODULE_NAME).o
$(MODULE_NAME)-objs := $(OBJS)

### Xenomai directory, xeno-config and library directory ###########
XENO_CONFIG       = $(XENO_DIR)/bin/xeno-config
XENO_VER          = $(shell $(XENO_CONFIG) --version)
ifeq ($(findstring 2.4,$(XENO_VER)),2.4)
LXRT_CFLAGS       = $(shell $(XENO_CONFIG) --xeno-cflags)
else 
ifeq ($(findstring 2.5,$(XENO_VER)),2.6)
LXRT_CFLAGS       = $(shell $(XENO_CONFIG) --skin=native --cflags)
endif
endif
### General configuration stuff ####################################
CC                = $(CROSS_COMPILE)gcc
PWD    := $(shell pwd)

VERSION_SUPPORT :=  -DMOD_NAME=\"$(APP_NAME)\" \
                                        -DMOD_VERSION=\"$(_MOD_VERSION)\" \
                                        -DCOMMIT_REV=\"$(_COMMIT_REV)\" \
                                        -DTRUNK_REV=\"$(_TRUNK_REV)\" \
                                        -DBUILD_DATE=\"$(_BUILD_DATE)\"
                                    
EXTRA_CFLAGS := $(LXRT_CFLAGS) $(VERSION_SUPPORT)

default:
        @echo $(VERSION_SUPPORT)
        $(MAKE) -C $(KERNELSOURCEDIR) SUBDIRS=$(PWD) modules

clean:
        rm -frv $(MODULE_NAME).ko $(OBJS) $(MODULE_NAME).mod.* .*.cmd $(MODULE_NAME).o Module.symvers .*.tmp .$(MODULE_NAME).*.cmd .tmp_versions
        rm -f *.order
Собирается она при указании XENO_DIR=xenomai-2.5.3-bin, KERNELSOURCE=linux-2.6.30.10, собирается при помощи arm-linux-gnueabi-4.2.2. Я пропатчил ядро xenomai-2.6.0, собрал его в xenomai-2.6.0-bin, добавил в Makefile пути
XENO_DIR=/mnt/filestore/boiler/xenomai-2.6.0-bin
KERNELSOURCEDIR=/mnt/filestore/boiler/linux-2.6.38.8
и
ifeq ($(findstring 2.6,$(XENO_VER)),2.6)
LXRT_CFLAGS       = $(shell $(XENO_CONFIG) --skin=native --cflags)
endif
Пытаюсь собрать компилятором arm-none-linux-gnueabi-gcc v.4.5. Получаю:
splinter@vniir-ds1:/mnt/filestore/boiler/AFL/UPG_main$ make CROSS_COMPILE=$CROSS
make -C /mnt/filestore/boiler/linux-2.6.38.8 SUBDIRS=/mnt/filestore/boiler/AFL/UPG_main modules
make[1]: Вход в каталог `/mnt/filestore/boiler/linux-2.6.38.8'
  CC [M]  /mnt/filestore/boiler/AFL/UPG_main/main.o
cc1: error: unrecognized command line option "-m64"
cc1: error: unrecognized command line option "-mno-red-zone"
cc1: error: unrecognized command line option "-mcmodel=kernel"
cc1: error: unrecognized command line option "-maccumulate-outgoing-args"
make[2]: *** [/mnt/filestore/boiler/AFL/UPG_main/main.o] Ошибка 1
make[1]: *** [_module_/mnt/filestore/boiler/AFL/UPG_main] Ошибка 2
make[1]: Выход из каталога `/mnt/filestore/boiler/linux-2.6.38.8'
make: *** [default] Ошибка 2
Откуда он берет эти инструкции?

★★★★★

ARCH=arm после make добавь.

anonymous ()

Вопрос в догонку. Как передать флаги оптимизации компиляции? например -О3

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

передавай их компилятору в виде опций ну или CFLAGS в мейкфайле

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

в виде опции матюгается,говорит что у make нет таких опций

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

make не компилятор! gcc или кто у вас там компилятор

bhfq ★★★★★ ()

Оффтоп: Аду на арм уже нашли?

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