mark_tong 发表于 2015-05-12 18:22

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]
查看完整版本: Build NVMe driver issue