LINUX.ORG.RU

[ночной тупняк] [Makefile] откомпилить 32bit из-под 64bit

 


0

2

Просьба помочь разобраться.
Makefile такой:

CC = gcc
CFLAGS = -m32 -c

LD = ld
LDFLAGS = -melf_i386 -T pci_rom.ld

ASM = as
OBJCOPY = objcopy
OBJCOPY_FLAGS = -v -O binary
OBJS:= crt0.o main.o ports.o video.o

ROM_OBJ = rom.elf
ROM_BIN = rom.bin
ROM_SIZE = 65536

all: $(OBJS)
        $(LD) $(LDFLAGS) -o $(ROM_OBJ) $(OBJS)
        $(OBJCOPY) $(OBJCOPY_FLAGS) $(ROM_OBJ) $(ROM_BIN)
        build_rom $(ROM_BIN) $(ROM_SIZE)

crt0.o: crt0.S
    $(ASM) -o $@ $<


%.o: %.c
    $(CC) -o $@ $(CFLAGS) $<

clean:
    rm -rf *~ *.o *.elf *.bin
не пойму какие флаги забыл
выхлоп такой: ld: i386:x86-64 architecture of input file is incompatible with i386 output



Последнее исправление: elrprt (всего исправлений: 4)

Ответ на: комментарий от devl547

CFLAGS = -m32 стоит (буфер старый скопирнул в пост)
с ним выхлоп такой какой я указал. Я что-то забыл для ld?

elrprt
() автор топика

export CFLAGS="-march=i686 -mtune=i686 -m32" export LDFLAGS="-m32"

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

> «file %^»

ой, клавишей промахнулся… «file $^».

arsi ★★★★★
()

crt0.S

Этот для i386 собирается?

mv ★★★★★
()

Сделай make -n и смотри выхлоп, что и как оно вызывает. И можешь ещё его сюда запостить ;-)

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от arsi
file %^ ld -melf_i386 -T pci_rom.ld -o rom.elf crt0.o main.o ports.o video.o
file: invalid option -- 'T'
file: invalid option -- 'o'
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]
make: *** [all] Error 1
elrprt
() автор топика
Ответ на: комментарий от DELIRIUM

make -n

file crt0.o main.o ports.o video.o ld -melf_i386 -T pci_rom.ld -o rom.elf crt0.o main.o ports.o video.o
objcopy -v -O binary rom.elf rom.bin
build_rom rom.bin 65536

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

библиотек левых нет, gcc-32 присутсвует

elrprt
() автор топика
Ответ на: комментарий от Reset
CC = gcc
CFLAGS = -m32 -c

LD = ld
LDFLAGS = -melf_i386 -T pci_rom.ld

ASM = gcc
OBJCOPY = objcopy
OBJCOPY_FLAGS = -v -O binary
OBJS:= crt0.o main.o ports.o video.o

ROM_OBJ = rom.elf
ROM_BIN = rom.bin
ROM_SIZE = 65536

all: $(OBJS)
        $(LD) $(LDFLAGS) -o $(ROM_OBJ) $(OBJS)
        $(OBJCOPY) $(OBJCOPY_FLAGS) $(ROM_OBJ) $(ROM_BIN)
        build_rom $(ROM_BIN) $(ROM_SIZE)

crt0.o: crt0.S
        $(ASM) -o $@ $(CFLAGS) $<

%.o: %.c
    $(CC) -o $@ $(CFLAGS) $<

clean:
    rm -rf *~ *.o *.elf *.bin

Выхлоп:

ld -melf_i386 -T pci_rom.ld -o rom.elf crt0.o main.o ports.o video.o
ld: i386:x86-64 architecture of input file `crt0.o' is incompatible with i386 output
ld: i386:x86-64 architecture of input file `main.o' is incompatible with i386 output
ld: i386:x86-64 architecture of input file `ports.o' is incompatible with i386 output
ld: i386:x86-64 architecture of input file `video.o' is incompatible with i386 output
make: *** [all] Error 1

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

блин. на этом и был завязан тупняк :) tnx!

elrprt
() автор топика

Спасибо всем - все собралось успешно!

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