Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > asm + kernel module


Автор: MAKCim 5.12.2006, 22:17
есть исходный файл модуля (на С)
в нем идет вызов extern функции
Код

...
extern void __handler();
...
__handler();

__handler() написан на asm-е
Код

...
.text
.globl __handler
.type  __handler, @function
__handler:
...

но это все в принципе не важно
вопрос в другом: как слинковать сишный объектник с объектником __handler()
make закономерно пишет, что не может найти handler.c для handler.o, который был получен обычным as-ом

Автор: Dude03 5.12.2006, 23:11
Цитата(MAKCim @  5.12.2006,  22:17 Найти цитируемый пост)
make закономерно пишет, что не может найти handler.c для handler.o, который был получен обычным as-ом

хммм че значит make пишет?
как вообще линкуешь? ld не должен так ругаться... Может makefile выложи

Автор: Mayk 5.12.2006, 23:12
Примерно так(с вполне очевидными изменениями для замены nasm на as):
Код

OFILES=main.o sq.o
CFLAGS=-O6 -ffast-math -I$(HOME)/bin/include
LDFLAGS=
NASMFLAGS=-I/devel/src-old/asm  -f elf
EXE=main
CC=g++

.PHONY: clean
    
$(EXE): Makefile $(OFILES)
    $(CC) -o $(EXE) $(OFILES) $(LDFLAGS)

%.o: %.asm
    nasm $(NASMFLAGS) -o $*.o    $*.asm
%.o: %.c; $(CC) $(CFLAGS) -c -o $*.o $*.c

clean:; rm -f $(EXE) $(OFILES)

Цитата

02:11:dvl:~/src-old/pol/sqrt$ ls
main  main.c  main.o  Makefile  sq  sq.asm  sq.o  types.mac




Автор: MAKCim 6.12.2006, 10:39
спасибо, ребята, сам разобрался
забыл строчку добавить
Код

handler.o:
    as $< -o $@

 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)