Build NVMe driver issue
Hi,During building the NVMe driver on OpenIndiana, I meet the link issue although pass source code compile.
As the followed log show, object fie could not found some functions, such as "bd_mod_init".
I found the /kernel/drv/amd64/blkdev should include "bd_mod_init".
How to update the Makefile? Thanks!
$nm nvme
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_alloc_handle
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_attach_handle
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_detach_handle
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_free_handle
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_mod_fini
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_mod_init
| 0| 0|FUNC |GLOB |0 |UNDEF|bd_xfer_done
| 0| 0|FUNC |GLOB |0 |UNDEF|curcpup
| 0| 0|FUNC |GLOB |0 |UNDEF|cv_broadcast
| 0| 0|FUNC |GLOB |0 |UNDEF|cv_destroy
| 0| 0|FUNC |GLOB |0 |UNDEF|cv_init
| 0| 0|FUNC |GLOB |0 |UNDEF|cv_timedwait
***************************************
Content of Makfile
all: nvme
drivername = nvme
# which compiler
CC = cc
# which linker
LD = ld
# options for compile
#CFLAGS = -D_KERNEL -m64 -xarch=sse2a -xmodel=kernel -c
#options for compile, add debug flag
CFLAGS = -D_KERNEL -DDEBUG -m64 -xarch=sse2a -xmodel=kernel -c -g
#options for compile, add debug flag
CFLAGS_S = -D_KERNEL -DDEBUG -m64 -xarch=sse2a -xmodel=kernel -c -g -S
# options for link
#LFLAGS = -dy -N /kernel/drv/adm64/blkdev -o
#LFLAGS = -lsec -lgen -ldl -lnsl -lsocket -lresolv -L /usr/lib/amd64/ -r -o
#LFLAGS = -L /usr/lib -lsocket -lresolv -r -o
#LFLAGS = -r -o
LFLAGS = -r -dy -o
SRCS = $(wildcard *.c)
objects = $(patsubst %c, %o, $(SRCS))
#objects = nvme.o nvme_ns.o nvme_ns_cmd.o nvme_qpair.o nvme_ctrlr_cmd.o nvme_ctrlr.o
$(drivername):$(objects)
@echo "ld_library_path=" $(LD_LIBRARY_PATH)
@echo "object=" $(objects)
$(LD) $(LFLAGS) $@ $(objects)
.c.o:
$(CC) $(CFLAGS) $<
$(CC) $(CFLAGS_S) $<
clean:
-rm *.s
-rm *.o
-rm nvme
# -rem_drv $(drivername)
-rm /tmp/nvme
install:nvme
# cp nvme.conf /usr/kernel/drv
# -ln -s /tmp/nvme /usr/kernel/drv/amd64/nvme
# cp $(drivername) /tmp/
# cp $(drivername) /usr/kernel/drv/amd64
# add_drv $(drivername)
页:
[1]