我看过these和these other solutions,但是无法编写正确的Makefile来产生所需的结果。
因此,我有这个< HTTP/1.1 301 Moved Permanently
< Content-Type: text/html; charset=utf-8
< Function-Execution-Id: t8frc9wsdvzp
< Location: $redirectURL
< X-Cloud-Trace-Context: 1f817eecdc84ad4a7542fba5898caf50;o=1
< Date: Mon, 20 May 2019 13:02:37 GMT
< Server: Google Frontend
< Content-Length: 319
< Alt-Svc: quic=":443"; ma=2592000; v="46,44,43,39"
文件。它模拟linux内核模块的加载和删除。位置:simple.c
/path/to/dir/simple.c
我也将此#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
/* This function is called when the module is loaded. */
int simple_init(void)
{
printk(KERN_INFO "Loading Module\n");
return 0;
}
/* This function is called when the module is removed. */
void simple_exit(void) {
printk(KERN_INFO "Removing Module\n");
}
/* Macros for registering module entry and exit points. */
module_init( simple_init );
module_exit( simple_exit );
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Simple Module");
MODULE_AUTHOR("SGG");
与Makefile
放在同一目录中,位置:simple.c
。
/path/to/dir/Makefile
在终端上运行时:
obj-m += simple.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
所有内容均已正确编译(在同一目录cd path/to/dir/
make
中。
我想要的是这个
path/to/dir/
在simple.c
中的位置。
/path/to/dir/src/
在Makefile
中的位置。
输出在/path/to/dir/
或/和/path/to/dir/bin/
中的位置。
运行/path/to/dir/obj/
时,输出应在make
,bin
目录中结束。
我不太了解Makefile(obj
)中的一些复杂情况。为了获得所需结果,对/lib/modules/$(shell uname -r)/build
的所有各种更改都以失败告终。
我该怎么做?
编辑:
Makefile
中的Makefile
具有以下代码:
/lib/modules/$(shell uname -r)/build
答案 0 :(得分:0)
我不知道我是否理解这个问题。首先,我建议您在SRC文件夹中找到源代码。之后,选择要在其中创建Makefile的目录。
下一步是定义链接程序所需的代码集。不要忘记SRC文件夹的路径。
现在是时候创建目标文件了。在此步骤中,选择选项-o [path_obj] / [file_name] .o。
最后一步是链接程序,不要忘记对象位于[path_obj]文件夹中。
一个简单的例子可能是:
#path definitions
SRC_path = /path_to_src/
OBJ_path = /path_to_obj/
BIN_path = /path_to_bin/
#lists definitions
SRC = [file1].c [file2].c
OBJ = $(addsuffix .o, $(basename ${SRC}))
#Suffixes definitions
.suffixes:
.suffixes: .c .o
#Create objects
.c.o: gcc -I[include_files] -c $(SRC_path)$< -o $(OBJ_path)$@
#Link program
TAG: gcc $(addprefix $(OBJ_path), $(OBJ)) -o $(BIN_path)[program_name]
我希望您觉得它有用