- 论坛徽章:
- 0
|
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
[93] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_alloc_handle
[203] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_attach_handle
[216] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_detach_handle
[222] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_free_handle
[143] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_mod_fini
[142] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_mod_init
[187] | 0| 0|FUNC |GLOB |0 |UNDEF |bd_xfer_done
[180] | 0| 0|FUNC |GLOB |0 |UNDEF |curcpup
[123] | 0| 0|FUNC |GLOB |0 |UNDEF |cv_broadcast
[182] | 0| 0|FUNC |GLOB |0 |UNDEF |cv_destroy
[179] | 0| 0|FUNC |GLOB |0 |UNDEF |cv_init
[131] | 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)
|
|