I include a makefile to compile a C++ written module. In addition:

    1) init_module() and cleanup_module() have to be prefixed with
extern "C" to avoid name mangling problems.

    2) All kernel includes and declarations have to be bracketed with

#ifdef __cplusplus
extern "C" {
#endif

#include <kernel_stuff>

#ifdef __cplusplus
}
#endif

It works fine here using gcc 2.8.1 - I have not tried any other
compiler.

Regards

--------------------------
- POSEIDON CONTROLS INC -
- Phone: (450)-659-9186 -
- Fax:   (450)-659-0014 -


OBJS = mod.o pamux.o
TARGET = rtl_pamux.o

# compiler
CXX = g++
CFLAGS = -I/usr/src/linux/include -I/usr/src/rtl/include \
        -Wall -Wstrict-prototypes -fomit-frame-pointer \
        -fno-exceptions -fno-rtti -fno-builtin \
        -mhard-float -fno-strength-reduce

# linker
LD = /usr/i586-linux-libc6/bin/ld
LDFLAGS = -nostdlib -r -static 
LDLIBS  =

all : rtl_pamux.o 

pamux.o : pamux.cc pamux.hh pamuxint.hh
        $(CXX) $(CFLAGS) -c -o $@ $<

mod.o: mod.cc pamux.hh pamuxint.hh
        $(CXX) $(CFLAGS) -c -o $@ $<

$(TARGET) : $(OBJS)
        $(LD) $(LDFLAGS) -o $@ $(OBJS)

clean:
        rm -f *.o

rtl:
        insmod ../modules/rtl_sched.o

test:
        sync
        insmod rtl_pamux.o

Reply via email to