Ссылка NullReferenceException или Object, не установленная на экземпляр объекта, возникает, когда объект класса, который вы пытаетесь использовать, не создается. Например:
Предположим, что у вас есть класс с именем Student.
public class Student
{
private string FirstName;
private string LastName;
public string GetFullName()
{
return FirstName + LastName;
}
}
Теперь рассмотрим другой класс, в котором вы пытаетесь получить полное имя учащегося.
public class StudentInfo
{
public string GetStudentName()
{
Student s;
string fullname = s.GetFullName();
return fullname;
}
}
Как видно из вышеприведенного кода, оператор Student s - объявляет только переменную типа Student, обратите внимание, что класс Student не создается в этой точке. Следовательно, когда выполняется выполнение инструкции s.GetFullName (), она выкинет исключение NullReferenceException.
Помещение ARCH
и CROSS_COMPILE
в Makefile не работает. Вам нужно поместить их в командной строке:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
вы можете попробовать, вы забыли добавить ARCH и CROSS_COMPILE в значение по умолчанию и очистить
ARCH=arm
COMPILER=arm-none-linux-gnueabi
obj-m := Hello.o
KERNELDIR := /home/ravi/workspace/hawk/linux-omapl1
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=$(ARCH) clean
MODULES := hola_kern.o
#guest architecture
ARCH := arm
CROSS_COMPILE := arm-linux-gnueabi-
obj-m := $(MODULES)
#path of the arm compiled kernel
ROOTDIR := /home/aldo/c/proyectos/prefixa/work/kernels/linux-omap-5f0a6e2
MAKEARCH := $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
all: modules
modules:
$(MAKEARCH) -C $(ROOTDIR) M=${shell pwd} modules
clean:
$(MAKEARCH) -C $(ROOTDIR) M=${shell pwd} clean
добавление export
в конце ваших объявлений переменных Makefile сделает их доступными для подоболочек. и добавьте тире к префиксу CROSS_COMPILE
в качестве JayM , а M
вместо SUBDIRS
в качестве ответа user502515 .
и обычно полезно использовать :=
, а не =
в Makefile, поэтому переменная получает интерполяцию только один раз. действительно, в данном конкретном случае это не имеет значения.
ARCH := arm
CROSS_COMPILE := arm-none-linux-gnueabi-
obj-m := Hello.o
KDIR := /home/ravi/workspace/hawk/linux-omapl1
PWD := $(shell pwd)
export
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
Заменить
ARCH = arm CROSS_COMPILE = arm-none-linux-gnueabi
blockquote>на
export ARCH : = arm export CROSS_COMPILE: = arm-none-linux-gnueabi -
blockquote>это также будет работать, если вы не хотите давать эту командную строку параметров каждый раз.