Re: How to link the module ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 22, 2004 at 01:36:18PM +0200, Christophe Lucas wrote:
> Dhiman, Gaurav (Gaurav.Dhiman@ca.com) wrote:
> > 
> > Hi,
> > 
> > I tried what you suggested, but when I run that command it gives a lot
> > of linking errors saying multiple definations of functions.
> > 
> > I looked for the same on net and found one simple makefile containing
> > the following command for linking:
> > 
> > ld -m elf_i386 -r -o pipe.c fifo.c msg_q.c main.c
> > 

I think the problem here is the -o (output file name), your object is in pipe.c

> > When I include this linking command in my Makefile, it does not give any
> > error and creates the corresponding .o file for each .c file but does
> > not create the single relocatable object file through which I can load
> > or unload the module. I do not get any error with following makefile,
> > but at the same time it does not link the .o file to make final module.
> > Please let me know what the problem is
> > 
> > Also please explain me about -m option of 'ld', whats the use of this
> > option ?
> > 
> > I am pasting below my Makefile for your reference
> > 
> > ******************************************
> > Makefile - Starts
> > ******************************************
> > 
> > KERNELDIR = /usr/src/linux-2.4
> > 
> > CC = gcc
> > 
> > include $(KERNELDIR)/include/linux/config.h
> > 
> > CFLAGS = -I$(KERNELDIR)/include  -D__KERNEL__ -DMODULE \
> >    -O -Wall -c
> > 
> > LFLAGS = -m elf_i386 -r -o
> 
> OBJ=main.o pipe.o fifo.o msg_q.o
> 
> > 
> > ifdef CONFIG_SMP
> > 	CFLAGS +=  -DSMP
> > endif
> > 
> > all: driver.o
> > 
> > driver.o: main.o pipe.o fifo.o msg_q.o
> > 	ld $(LFLAGS) main.o pipe.o fifo.o msg_q.o
> 	ld $(LFLAGS) $(OBJ) -o $@
> 
> instead of :
> 
> > main.o: main.c
> > 	$(CC) $(CFLAGS) main.c
> > 
> > fifo.o: fifo.c
> > 	$(CC) $(CFLAGS) fifo.c
> > 
> > pipe.o: pipe.c
> > 	$(CC) $(CFLAGS) pipe.c
> > 
> > msg_q.o: msg_q.c
> > 	$(CC) $(CFLAGS) msg_q.c
> 
> put :
> 
> .c.o: $(OBJ)
>         $(CC) $(CFLAGS) -c $<
> 		
> It is only esthetic :)
> 
> 
> > 
> > #all: main.o pipe.o fifo.o msg_q.o
> > #	$(CC) $(CFLAGS) main.c pipe.c fifo.c msg_q.c
> > 
> > clean:
> > 	rm -f *.o *~ core
> > 
> > ******************************************
> > Makefile - Ends
> > ******************************************
> -- 
> Amicalement
> 
> Christophe 
> 
> * GNU/Linux & UNIX developer and network administrator
> * Membre RotomaLUG (http://www.rotomalug.org)
> * Registered User #271267
> * Email: c.lucas@ifrance.com
> * Web Site: http://odie.mcom.fr/~clucas/
> 
> --
> Kernelnewbies: Help each other learn about the Linux kernel.
> Archive:       http://mail.nl.linux.org/kernelnewbies/
> FAQ:           http://kernelnewbies.org/faq/
> 
>  
>  +++++++++++++++++++++++++++++++++++++++++++
>  This Mail Was Scanned By Mail-seCure System
>  at the Tel-Aviv University CC.

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux