Здравствуйте все) Я вот сейчас пишу ось (сразу просьба не объяснять, насколько это бессмысленное занятие ) Раньше писал под юникс, часть кода готова. потом снес его, т.к. места на винте мало осталось. И теперь нужно этот код компилить под виндой. Есть, значит, несколько файлов для nasma и несколько для gcc-cpp. Линкил раньше ld-ой. А теперь появилась проблема: ld не хочет линкить elf-модули в бинарный файл. Подскажите, пожалуйста, какой другой линкер для винды можно использовать, чтобы он линковал elf'ы в bin и, при этом, располагал их в том порядке, в котором они указаны в ком.строке? Или как можно еще поступить, чтобы сбилденный модуль запускался с начала файла
См. на форуме KolibriOS - там обьясняли как настроить gcc (LD, конечно), чтобы экзешник получался в нативном формате.
я это тоже делал, но под никсом. после перехода на винду, почему-то, начались глюки. Ооочень удивился
Файл menuet.ld: Код (Text): /*OUTPUT_FORMAT("binary")*/ ENTRY(Start) SECTIONS { .text 0x000000: { *(.text) } .data : { *(.data) hEnd = . ; } .bss : { *(.bss) } Memory = . ; } Файл asmcode.asm: Код (Text): format ELF public Start extrn Memory extrn hEnd extrn _sum section ".text" db "MENUET01" dd 1, Start, hEnd, Memory, hStack, Param, 0 Start: push 21 ; b push 79 ; a call _sum add esp, 8 or eax, -1 int 0x40 section ".bss" Param rb 256 rb 4096 hStack: Файл c_code.c: Код (Text): int sum(int a, int b) { return a+b; } Файл makefile: Код (Text): OUTFILE = program OBJS = asm_code.o c_code.o .SUFFIXES: .asm .o $(OUTFILE) : $(OBJS) ld -nostdlib -T menuet.ld -o $(OUTFILE) $(OBJS) objcopy $(OUTFILE) -O binary .asm.o: fasm $*.asm .c.o: gcc -c $*.c clean : del *.o del *.obj