Messages in this thread | | | From | root <> | Subject | scsi compiling/linking problem w/ 2.1.75 | Date | Tue, 23 Dec 1997 11:17:07 -0600 (CST) |
| |
it would appear that 2.1.75 won't link in scsi support unless modules have been selected (they don't have to be used however!)
here's what I got when compiling through the first time (no modules):
ld -m elf_i386 -T /usr/src/linux/arch/i386/vmlinux.lds -e stext arch/i386/kernel /head.o arch/i386/kernel/init_task.o init/main.o init/version.o \ arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/f s.o ipc/ipc.o \ fs/filesystems.a \ net/network.a \ drivers/block/block.a drivers/char/char.a drivers/misc/misc.a drivers/ne t/net.a drivers/scsi/scsi.a drivers/cdrom/cdrom.a drivers/pci/pci.a \ /usr/src/linux/arch/i386/lib/lib.a /usr/src/linux/lib/lib.a /usr/src/lin ux/arch/i386/lib/lib.a \ -o vmlinux drivers/scsi/scsi.a(scsi.o): In function `internal_cmnd': scsi.o(.text+0x12ac): undefined reference to `scsi_times_out' scsi.o(.text+0x12b5): undefined reference to `scsi_old_times_out' scsi.o(.text+0x12bf): undefined reference to `scsi_add_timer' scsi.o(.text+0x131c): undefined reference to `scsi_mlqueue_insert' scsi.o(.text+0x1325): undefined reference to `scsi_old_done' scsi.o(.text+0x137a): undefined reference to `scsi_old_done' drivers/scsi/scsi.a(scsi.o): In function `scsi_do_cmd': scsi.o(.text+0x16dd): undefined reference to `scsi_times_out' scsi.o(.text+0x16e5): undefined reference to `scsi_old_times_out' scsi.o(.text+0x16ef): undefined reference to `scsi_add_timer' scsi.o(.text+0x174d): undefined reference to `scsi_mlqueue_insert' scsi.o(.text+0x1755): undefined reference to `scsi_old_done' scsi.o(.text+0x17ba): undefined reference to `scsi_old_done' drivers/scsi/scsi.a(scsi.o): In function `scsi_done': scsi.o(.text+0x17d3): undefined reference to `scsi_delete_timer' drivers/scsi/scsi.a(scsi.o): In function `scsi_bottom_half_handler': scsi.o(.text+0x1869): undefined reference to `scsi_decide_disposition' scsi.o(.text+0x189f): undefined reference to `scsi_mlqueue_insert' drivers/scsi/scsi.a(scsi.o): In function `scsi_retry_command': scsi.o(.text+0x19c0): undefined reference to `scsi_times_out' scsi.o(.text+0x19c9): undefined reference to `scsi_old_times_out' scsi.o(.text+0x19d3): undefined reference to `scsi_add_timer' scsi.o(.text+0x1a30): undefined reference to `scsi_mlqueue_insert' scsi.o(.text+0x1a39): undefined reference to `scsi_old_done' scsi.o(.text+0x1a8e): undefined reference to `scsi_old_done' drivers/scsi/scsi.a(scsi.o): In function `scsi_finish_command': scsi.o(.text+0x1b19): undefined reference to `scsi_mlqueue_finish' scsi.o(.text+0x1b2a): undefined reference to `scsi_sense_valid' drivers/scsi/scsi.a(hosts.o): In function `scsi_init': hosts.o(.text.init+0xf0): undefined reference to `scsi_error_handler' drivers/scsi/scsi.a(sd.o): In function `sd_open': sd.o(.text+0x1c2): undefined reference to `scsi_block_when_processing_errors' drivers/scsi/scsi.a(sd_ioctl.o): In function `sd_ioctl': sd_ioctl.o(.text+0x35): undefined reference to `scsi_block_when_processing_error s' drivers/scsi/scsi.a(sr.o): In function `sr_open': sr.o(.text+0x976): undefined reference to `scsi_block_when_processing_errors' drivers/scsi/scsi.a(sr_ioctl.o): In function `sr_audio_ioctl': sr_ioctl.o(.text+0x5ed): undefined reference to `scsi_block_when_processing_erro rs' drivers/scsi/scsi.a(sr_ioctl.o): In function `sr_dev_ioctl': sr_ioctl.o(.text+0x10a8): undefined reference to `scsi_block_when_processing_err ors' drivers/scsi/scsi.a(scsi_ioctl.o)(.text+0x7ce): more undefined references to `sc si_block_when_processing_errors' follow make: *** [vmlinux] Error 1
when compiling with modules support (but not using any modules!) it compiles and links fine. I believe it's this little chunk from linux/drivers/scsi/Makefile that does it, but I'm a little ignorant on the best way to fix it...
ifeq ($(CONFIG_SCSI),y) # We must attach scsi_syms.o to scsi.o, as otherwise there is nothing to # pull the object file from the archive. SCSI=scsi.o ifeq ($(CONFIG_MODULES),y) O_TARGET := scsi_n_syms.o O_OBJS := scsi.o scsi_error.o scsi_obsolete.o scsi_queue.o OX_OBJS := scsi_syms.o SCSI := $(O_TARGET) endif L_OBJS += $(SCSI) hosts.o scsi_ioctl.o constants.o scsicam.o ifeq ($(CONFIG_PROC_FS),y) L_OBJS += scsi_proc.o endif else ifeq ($(CONFIG_SCSI),m) MIX_OBJS += scsi_syms.o M_OBJS += scsi_mod.o endif endif
| |