OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8649|回复: 8

编译驱动文件时报错:cc1: error: code model kernel does not support PIC mode

[复制链接]

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2019-7-3
在线时间
43 小时
发表于 2020-2-19 16:50:20 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 宸寰 于 2020-2-19 16:52 编辑

在编译字符驱动时报错
批注 2020-02-19 163713.png
按照网上方法在Linux源码Makefile中加上了 -fno-pie 后编译驱动报错更厉害了
批注 2020-02-19 164430.png
然后我又重新编译了一边内核,结果还是和上图一样的报错,将开发板光盘资料里面的例程源码复制进去修改路径后 make 也是一样的情况,但是视频里老师的编译时没有任何问题的啊,是因为我用的是 Ubuntu18.04 的原因吗,请问大神们这个该怎么解决啊!谢谢了!

最佳答案

查看完整内容[请看2#楼]

编译的是x86架构的,明显不对了,你在内核源码的根目录的Makefile文件下指定编译器了再编译看看,这个在教程中有提示的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2020-2-19 16:50:21 | 显示全部楼层
本帖最后由 仰望星空之云 于 2020-2-21 21:16 编辑
宸寰 发表于 2020-2-19 18:53
又装了一个16.04的虚拟机,配置好环境后倒是没有cc1的错误,但是结果和18.04下添加了-fno-pie后是一样的...

编译的是x86架构的,明显不对了,你在内核源码的根目录的Makefile文件下指定编译器了再编译看看,这个在教程中有提示的
5.png
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2019-7-3
在线时间
43 小时
 楼主| 发表于 2020-2-19 18:53:48 | 显示全部楼层
又装了一个16.04的虚拟机,配置好环境后倒是没有cc1的错误,但是结果和18.04下添加了-fno-pie后是一样的...
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-11-2
在线时间
13 小时
发表于 2020-3-15 17:56:25 | 显示全部楼层
麻烦问一下,你这个问题解决了没,我也遇到同样的问题le
回复

使用道具 举报

14

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2019-7-11
在线时间
42 小时
发表于 2020-3-18 17:23:38 | 显示全部楼层
修改makefile 即可,默认改为arm构架
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2019-7-3
在线时间
43 小时
 楼主| 发表于 2020-4-13 21:05:42 | 显示全部楼层
王晨wwwww 发表于 2020-3-15 17:56
麻烦问一下,你这个问题解决了没,我也遇到同样的问题le

解决了,是因为原本编译内核的命令都写在shell脚本里面,但是编译驱动的时候需要在内核源码的Makefile中指定编译架构以及交叉编译器,跳着视频看没注意中间已经将命令写在了Makefile里了
回复

使用道具 举报

20

主题

134

帖子

0

精华

高级会员

Rank: 4

积分
550
金钱
550
注册时间
2016-7-26
在线时间
90 小时
发表于 2020-6-17 20:20:23 | 显示全部楼层
字符设备驱动编译出现error:code model kernel does not support PIC mode

另一个帖子说的比较清楚,我同样的问题解决了
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-7-14
在线时间
11 小时
发表于 2021-12-28 17:48:21 | 显示全部楼层
使用这个    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  -j16    可以
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-7-14
在线时间
11 小时
发表于 2021-12-28 17:48:53 | 显示全部楼层
Toyou 发表于 2021-12-28 17:48
使用这个    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  -j16    可以

gg@ubuntu:~/linux_mx6ull/LINUX_drv/01_chrdevbase$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  -j16
make -C /home/gg/linux_mx6ull/LINUX_drv/linux-imx-4.1.15-2.1.0 M=/home/gg/linux_mx6ull/LINUX_drv/01_chrdevbase modules
make[1]: 进入目录“/home/gg/linux_mx6ull/LINUX_drv/linux-imx-4.1.15-2.1.0”
  CC [M]  /home/gg/linux_mx6ull/LINUX_drv/01_chrdevbase/chrdevbase.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/gg/linux_mx6ull/LINUX_drv/01_chrdevbase/chrdevbase.mod.o
  LD [M]  /home/gg/linux_mx6ull/LINUX_drv/01_chrdevbase/chrdevbase.ko
make[1]: 离开目录“/home/gg/linux_mx6ull/LINUX_drv/linux-imx-4.1.15-2.1.0”
gg@ubuntu:~/linux_mx6ull/LINUX_drv/01_chrdevbase$ ls1_chrdevbase.code-workspace  chrdevbase.c   chrdevbase.mod.c  chrdevbase.o  modules.order
chrdevbaseApp.c              chrdevbase.ko  chrdevbase.mod.o  Makefile      Module.symvers
gg@ubuntu:~/linux_mx6ull/LINUX_drv/01_chrdevbase$
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 14:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表