第一个linux编译
2016-07-08 16:25
381 查看
建立简单的C和Makefile两个文件后,就可以进行编译了,命令如下:
make -C /usr/src/linux-headers-4.2.0-41-generic M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led
显示如下:
make:进入目录'/usr/src/linux-headers-4.2.0-41-generic'
CC [M] /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.o
/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.c: In function ‘led_exit’:
/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.c:20:2: warning: ‘return’ with a value, in function returning void [enabled by default]
return 0;
^
Building modules, stage 2.
MODPOST 1 modules
CC /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.mod.o
LD [M] /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.ko
make:离开目录“/usr/src/linux-headers-4.2.0-41-generic”
用的是ubuntu 14.04 lts的系统,这个“linux-headers-4.2.0-41-generic”与系统有关,不同版本可能不一样,我是直接搜generic搜到的,因为我是进入了ledtest目录
所以开始就没有加 M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led,结果报错,提示一堆权限不够,不管三七二十一敲了sudo su,再编译不提权限了,但还是错误,提示make[1]: *** 没有规则可以创建“arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h”需要的目标“arch/x86/entry/syscalls/syscall_32.tbl”。 停止。后来加上的时候习惯性的打了个空格,就是M
= ,结果还是报错,郁闷。。。。。。
编译后,在图形界面下打开ledtest目录,原来只有两个文件,现在一下多了7个文件,不过都很小,最大的才4KB,
执行insmod led.ko,啥动静都没有
再执行lsmod | grep led
显示有
led 16384 0
再执行rmmod led,又是啥动静都没有
再执行dmesg |grep led | tail -n 2
这次有反应了,显示
[ 9214.590760] led_init_success
[ 9260.644913] led_init_exit_success
先到这,下个再写
哦,有个问题,make -C /usr/src/linux-headers-4.2.0-41-generic M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led,这条命令弄的时候我已经进到ledtest目录了,怎样才能省掉M后面的呢?太长了,或者短一点也行,这么长敲键盘敲的难受
make -C /usr/src/linux-headers-4.2.0-41-generic M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led
显示如下:
make:进入目录'/usr/src/linux-headers-4.2.0-41-generic'
CC [M] /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.o
/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.c: In function ‘led_exit’:
/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.c:20:2: warning: ‘return’ with a value, in function returning void [enabled by default]
return 0;
^
Building modules, stage 2.
MODPOST 1 modules
CC /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.mod.o
LD [M] /home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led/led.ko
make:离开目录“/usr/src/linux-headers-4.2.0-41-generic”
用的是ubuntu 14.04 lts的系统,这个“linux-headers-4.2.0-41-generic”与系统有关,不同版本可能不一样,我是直接搜generic搜到的,因为我是进入了ledtest目录
所以开始就没有加 M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led,结果报错,提示一堆权限不够,不管三七二十一敲了sudo su,再编译不提权限了,但还是错误,提示make[1]: *** 没有规则可以创建“arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h”需要的目标“arch/x86/entry/syscalls/syscall_32.tbl”。 停止。后来加上的时候习惯性的打了个空格,就是M
= ,结果还是报错,郁闷。。。。。。
编译后,在图形界面下打开ledtest目录,原来只有两个文件,现在一下多了7个文件,不过都很小,最大的才4KB,
执行insmod led.ko,啥动静都没有
再执行lsmod | grep led
显示有
led 16384 0
再执行rmmod led,又是啥动静都没有
再执行dmesg |grep led | tail -n 2
这次有反应了,显示
[ 9214.590760] led_init_success
[ 9260.644913] led_init_exit_success
先到这,下个再写
哦,有个问题,make -C /usr/src/linux-headers-4.2.0-41-generic M=/home/bn/a31-4.2/lichee/linux-3.3/drivers/ledtest/led,这条命令弄的时候我已经进到ledtest目录了,怎样才能省掉M后面的呢?太长了,或者短一点也行,这么长敲键盘敲的难受
相关文章推荐
- linux 内存调优
- linux下实现CPU使用率和内存使用率获取方法
- linux 参数优化
- 工作环境配置
- ubuntu安装openssh-server 报依赖错误的解决过程 ubuntu自带的有openssh-client,所以可以通过 1 ssh username@host 来远程连接linux 可
- linux学习6:文件内容查阅
- 在centos7上配置caffe所遇到的一些问题
- linux 服务器卸载和安装jdk(包括openjdk)
- Linux必会原理之软连接文件和硬链接文件的区别
- Linux必会原理之文件删除的原理
- linux原始套接字(1)-arp请求与接收
- linux的端口小结
- 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署
- Linux常用目录含义总结
- 如何查看Linux磁盘空间大小
- Linux启动流程【转载】
- Ubuntu/Linux 下部署Ant攻略
- Linux服务器宕机案例第二则
- linux 内存调优
- CentOS 6.5 搭建 LAMP 环境