初学者求解-交叉环境的搭建

cikerexue 2012-12-14 02:50:42
各位大神求助啊,本人初学linux一书,里面有搭建交叉编译环境,本人如网上所说搭建,但是老是到最后一步,安装模块的时候报错,网上说是内核版本不匹配,我找过3个版本的内核代码,都是一样的报错。最后一次报错结果如下:


makefile中指向目录有文件如下:


本人下载的内核源码和自身携带的如下:


我是初学者,刚刚开始看linux设备驱动一书,只是想先把环境搭建出来
要加载的模块本身没有意义,就是一个hello world
但是现在我电脑上的环境也不能搭建出来,搞了3天了,编译内核不下5次了,感觉自己太水了。
我的版本难道还不匹配么?
...全文
255 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
铭雪 2012-12-14
  • 打赏
  • 举报
回复
解答的很透彻!
cikerexue 2012-12-14
  • 打赏
  • 举报
回复
引用 13 楼 weiqing1981127 的回复:
你说的下载linu2.6.38到虚拟机,然后要在虚拟机上直接insmod到虚拟机你下的那个linux2.6.38文件里是不可实现的
哦,明白了,谢谢,结贴给分
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
你说的下载linu2.6.38到虚拟机,然后要在虚拟机上直接insmod到虚拟机你下的那个linux2.6.38文件里是不可实现的
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
这样给你解释下,我们一般insmod驱动都是加载到开发板的,比如我们使用mini2440的开发板,它使用的是linux2.6.32.2的内核,那么我们会下载一个linux2.6.32.2内核源代码到虚拟机,然后将Makefile的路径指向我们存放linux2.6.32.2内核源代码,这样你make下会生成hello.ko,然后你启动开发板(假设你的操作界面使用的是超级终端),那么你首先传输uImage或者ZImage内核镜像,然后在超级终端下insmod hello.ko,这样,你的hello.ko就是基于你下载的linux2.6.32.2,同时也编译进了linux2.6.32.2内核中。
cikerexue 2012-12-14
  • 打赏
  • 举报
回复
引用 10 楼 weiqing1981127 的回复:
是的,你的回答完全正确,恭喜你理解了。如果只是在虚拟机上insmod,根本不用下载内核到虚拟机的。
恩,再次感谢你! 我还有一个疑问,有没有什么办法可以将我的模块加载到我下载后编译并挂载上去的那个文件夹里面呢?
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
是的,你的回答完全正确,恭喜你理解了。如果只是在虚拟机上insmod,根本不用下载内核到虚拟机的。
cikerexue 2012-12-14
  • 打赏
  • 举报
回复
引用 6 楼 weiqing1981127 的回复:
如果你在虚拟机上insmod,那你必须在虚拟机里找到,虚拟机中导入的linux内核的版本,你可以用下面我写的这个Makefile就可以了 obj-m := hello.o KERNELDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=……
首先谢谢你的耐心解答。 这样是可以。但是我还有一个疑惑,这样的话那我原先下载的内核代码进行编译就没有必要了,直接可以使用系统自带的就ok了。下面是我的理解,不知道错了没有: ---------------------------------------------------------------------------------- 我首先在终端之中用察看自己内核代码版本,之后下载对应的版本,之后进行make oldconfig(即裁剪内核),之后再进行编译(即make),之后创建内核模块(即make modules),最后安装(即make modules_install)模块。即在我的文件之中生成”/lib/modules/2.6.38.8“这样一个文件夹,至此环境搭建完成。 ---------------------------------------------------------------------------------- 然后,我的想法是我在外面编译我的hello world代码,并生成模块。最终我用我的那个Makefile编译出来的模块加载到的地方是"/lib/modules/2.6.38.8“这个文件夹里面。而不是加载到在系统自带的"/lib/modules/2.6.38-8-generic",而你说的那个方式是加载到系统自带的文件夹里面。 不知道我的想法对不对?谢谢
zhujinqiang 2012-12-14
  • 打赏
  • 举报
回复
楼上正解..
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
编译驱动,要看你编译的驱动在哪里加载,也就是看驱动的使用环境。如果在虚拟机内加载,你就要知道虚拟机里linux内核的版本,如果你在开发板上加载,那么你就要知道开发板使用的内核版本,这个版本就对应Makefile中的内核路径
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
如果你在虚拟机上insmod,那你必须在虚拟机里找到,虚拟机中导入的linux内核的版本,你可以用下面我写的这个Makefile就可以了 obj-m := hello.o KERNELDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
cikerexue 2012-12-14
  • 打赏
  • 举报
回复
引用 3 楼 weiqing1981127 的回复:
另外友情提醒:你Makeifile中用的是2.6.38.8版本的内核,如果这是开发板的内核版本,那你就该在板子上insmod,如果这是虚拟机中内核版本,那你就可以在虚拟机上insmod
我是在虚拟机里面insmod一个简单的hello world模块,只是做测试环境之用
cikerexue 2012-12-14
  • 打赏
  • 举报
回复
引用 2 楼 weiqing1981127 的回复:
加载模块应该是insmod hello.ko 不是你的insmod ./hello.ko 哦
ps:我也是自己看驱动,自己摸索驱动快一年了,加油!

谢谢你的解答,但是还是不行,这是我的运行结果。
[
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
另外友情提醒:你Makeifile中用的是2.6.38.8版本的内核,如果这是开发板的内核版本,那你就该在板子上insmod,如果这是虚拟机中内核版本,那你就可以在虚拟机上insmod
流水恋歌 2012-12-14
  • 打赏
  • 举报
回复
加载模块应该是insmod hello.ko 不是你的insmod ./hello.ko 哦 ps:我也是自己看驱动,自己摸索驱动快一年了,加油!
cikerexue 2012-12-14
  • 打赏
  • 举报
回复
再附上模块信息:
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题研究(Matlab代码实现)内容概要:本文围绕PINN(物理信息神经网络)在求解二阶常微分方程(ODE)边值问题中的应用展开研究,重点介绍了如何利用PINN结合Matlab代码实现对微分方程的数值求解。文章详细阐述了PINN的基本原理,即将物理定律嵌入神经网络损失函数中,使模型在训练过程中不仅拟合数据,还能满足已知的物理规律。通过构建神经网络逼近未知解,并引入边界条件与微分方程残差项,实现了对边值问题的有效求解。文中提供了完整的Matlab代码示例,涵盖网络搭建、损失函数定义、训练流程及结果可视化,便于读者复现和理解。此外,文档还列举了多个相关科研方向与技术应用案例,展示了PINN方法在多学科交叉领域的扩展潜力。; 适合人群:具备一定数学基础和编程能力的理工科研究生、科研人员及工程技术人员,熟悉微分方程、机器学习基本概念并掌握Matlab编程语言者更佳。; 使用场景及目标:①学习并掌握PINN方法的基本思想及其在微分方程求解中的具体实现;②通过Matlab代码实践,理解如何将物理约束融入神经网络训练过程;③为从事科学计算、工程仿真、智能优化等相关领域研究提供方法参考和技术支持。; 阅读建议:建议读者结合文中提供的代码逐段运行调试,深入理解每一步的数学含义与编程逻辑。同时可参考文档中列出的其他研究主题进行横向拓展,提升综合科研能力。对于初学者,建议先复习神经网络基础与常微分方程理论,再进入PINN的学习与实践。
内容概要:本文档详述了电压型虚拟同步发电机(VSG)离网仿真模型的构建方法及其控制策略。主要内容涵盖电压电流双闭环控制、有功无功外环控制、PQ计算、锁相环(PLL)、abc到dq坐标系转换以及VSG转动惯量模拟等方面。文中提供了具体的MATLAB函数实现代码片段,如瞬时有功功率计算、PLL参数设定、dq轴电流控制公式、坐标变换矩阵等,并分享了一些实用的仿真调试技巧,如调整PLL参数以消除相位抖动、采用交叉解耦减少动态超调、优化求解器配置提高仿真效率等。此外,还特别强调了自定义搭建各组件而非直接使用预置模型的优势,有助于深入理解系统的工作机制。 适用人群:对电力电子、电机控制等领域有一定基础知识的研究人员和技术人员,特别是希望深入了解VSG离网运行特性和控制算法的从业者。 使用场景及目标:适用于需要进行VSG离网仿真研究的场合,旨在帮助用户掌握VSG仿真模型的具体搭建步骤和控制策略的设计思路,从而能够独立完成相关仿真实验并分析实验结果。 其他说明:文档不仅提供了详细的理论解释和技术指导,还包括了丰富的实践经验分享,对于初学者来说是一份非常有价值的参考资料。同时,所涉及的技术细节和代码实现均基于Matlab/Simulink 2018b环境,确保了内容的时效性和实用性。

21,619

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧