module 制作 编译 脚本

-------------------------------hello.c-----------------------------------------
#include <linux/module.h>
#include <linux/init.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("hgj Xie");
MODULE_DESCRIPTION("Hello World Module");
MODULE_ALIAS("a simplest module");

extern int add_integar(int a,int b); 
extern int sub_integar(int a,int b);

stastatic char *name = "David Xie";              
static int age = 30;    


module_param(age, int, S_IRUGO);                                
module_param(name, charp, S_IRUGO);                             
static int __init hello_init()
{
    int res = add_integar(1,2);
    return 0;
}

static void __exit hello_exit()
{
    int res = sub_integar(2,1);
}

module_init(hello_init);
module_exit(hello_exit);



-------------------------------calculate.c-----------------------------------------
#include <linux/init.h>                                

#include <linux/module.h> 
                               
MODULE_LICENSE("GPL");                                
                                
int add_integar(int a,int b)                                
{                                
	return a+b;                             
} 
                               
int sub_integar(int a,int b)                                
{                                
	return a-b;                             
}                            

static int __init sym_init()
{
    return 0;
}

static void __exit sym_exit()
{

}

module_init(sym_init);
module_exit(sym_exit);

/* EXPORT_SYMBOL(add_integar); */
/* EXPORT_SYMBOL(sub_integar); */






----------------------------------------makefile ----------------------------------------------------------------------------------------------------------------------------

ifneq ($(KERNELRELEASE),)


obj-m := hello.o calculate.o
hello-objs : =file1.o hello.o

else

KDIR :=  /ext/myandroid_sabrelite/android-imx6-r13.3/kernel_imx
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=/ext/myandroid_sabrelite/android-imx6-r13.3/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- 
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers


endif


//这里这个脚本必须命名为makefile 

//这个脚本是编译2个ko文件。hello模块有2个源文件

----------------------------------------------------------------------------------

S_IRUGO 任何用户都对/sys/module中出现的参与有读权限

S_IWUSR 允许root 修改在/sys/module中的该参数

1|root@android:/sys/module # cd hello/parameters/
root@android:/sys/module/hello/parameters # ll
-r--r--r-- root     root         4096 1970-01-02 01:44 age
-r--r--r-- root     root         4096 1970-01-02 01:44 name
root@android:/sys/module/hello/parameters #


root@android:/sdcard/mine # insmod calculate.ko
calculate.c:sym_init
root@android:/sdcard/mine # lsmod
calculate 755 0 - Live 0xbf006000
hid_multitouch 7772 0 - Live 0xbf000000
root@android:/sdcard/mine # insmod hello.ko
calculate.c:add_integar
Hello init
root@android:/sdcard/mine # rm hello.ko
root@android:/sdcard/mine # rmmod hello
Hello exit!
root@android:/sdcard/mine # rmmod calculate
calculate.c:sym_exit
root@android:/sdcard/mine #


root@android:/sdcard/mine # insmod hello.ko age=50

使用

-------------------------------



modprobe  会自动先安装依赖的模块,根据/lib/modules/$version/modules.dep来查阅依赖关系。这个文件是编译内核时自动生成的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的 LNMP 编译安装脚本示例,适用于 CentOS 7: ```bash #!/bin/bash # 安装必要的依赖 yum -y install epel-release yum -y install wget gcc pcre-devel openssl-devel # 下载并编译安装 Nginx NGINX_VERSION=1.19.6 wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz tar -zxvf nginx-${NGINX_VERSION}.tar.gz cd nginx-${NGINX_VERSION} ./configure --prefix=/usr/local/nginx --with-http_ssl_module make && make install # 下载并编译安装 MariaDB MARIADB_VERSION=10.5.8 wget https://downloads.mariadb.org/f/mariadb-${MARIADB_VERSION}/source/mariadb-${MARIADB_VERSION}.tar.gz tar -zxvf mariadb-${MARIADB_VERSION}.tar.gz cd mariadb-${MARIADB_VERSION} cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DENABLE_SSL=1 make && make install # 下载并编译安装 PHP PHP_VERSION=7.4.15 wget https://www.php.net/distributions/php-${PHP_VERSION}.tar.gz tar -zxvf php-${PHP_VERSION}.tar.gz cd php-${PHP_VERSION} ./configure --prefix=/usr/local/php --with-mysqli=/usr/local/mariadb/bin/mysql_config --with-openssl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mbstring --enable-sockets --enable-opcache --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir make && make install # 配置 Nginx、MariaDB 和 PHP # 这里省略具体的配置步骤,可以根据需要自行配置 # 启动服务 /usr/local/nginx/sbin/nginx /usr/local/mariadb/bin/mysqld_safe & /usr/local/php/sbin/php-fpm # 设置开机自启 echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local echo "/usr/local/mariadb/bin/mysqld_safe &" >> /etc/rc.local echo "/usr/local/php/sbin/php-fpm" >> /etc/rc.local chmod +x /etc/rc.d/rc.local # 完成安装 echo "LNMP 安装成功!" ``` 请注意,此脚本仅用于示例目的,实际使用时可能需要根据自己的需求进行适当的修改和配置。另外,建议在执行脚本之前备份重要的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值