Есть исходники модуля ядра pf_ring.ko. Возникла необходимость пересобрать модуль с использованием своих ассемблерных функций, специализированных под 64-битную архитектуру. Скомпилированная as-ом функция теперь лежит в библиотеке libasm.a
В Makefile нету прямого вызова gcc, поэтому дописать параметром -lasm не имею возможности. Содержимое Makefile:
obj-m := pf_ring.o
SVNDEF := -DSVN_REV="\"$(shell svnversion -n .)\""
ifeq (,$(BUILD_KERNEL))
BUILD_KERNEL=$(shell uname -r)
endif
EXTRA_CFLAGS += -I$(PWD) $(SVNDEF)
HERE=$(PWD)
# set the install path
INSTDIR := $(DESTDIR)/lib/modules/$(BUILD_KERNEL)/kernel/net/pf_ring
all: Makefile pf_ring.c linux/pf_ring.h
make -C /lib/modules/$(BUILD_KERNEL)/build SUBDIRS=$(HERE) EXTRA_CFLAGS='$(EXTRA_CFLAGS)' modules
clean:
...
install:
...
.....
ifdef CONFIG_MODULES
# By default, build modules as well
all: modules
# Build modules
#
# A module can be listed more than once in obj-m resulting in
# duplicate lines in modules.order files. Those are removed
# using awk while concatenating to the final file.
PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
@$(kecho) ' Building modules, stage 2.';
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
.....