首页 \ 问答 \ 深入理解linux内核 该怎么学啊,大神们介绍下经验啊

深入理解linux内核 该怎么学啊,大神们介绍下经验啊

我已经看了LkD还有LDD 基本都是看的懂的,但是看 深入理解linux内核 就觉得很难懂,目前看了第二第三章,求教学习方法
更新时间:2022-05-10 09:05

最满意答案

一、准备
  busybox 1.14.1
  qt-embedded-linux-opensource-src-4.5.1
  tslib 1.4
  gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
  构建一个新的根文件系统目录,路径为
  /root/rootfs

  二、具体步骤:

  1、编译安装busybox
  在官网下载最新版。可以参考如下几处要修改的地方:
  Busybox Settings ---> Build Options ---> (arm-linux-)Cross Compiler prefix
  Busybox Settings  ---> Installation Options --->[]Dont't use /usr
  Busybox Settings  ---> Installation Options --->(/root/rootfs) BusyBox installation prefix
  Busybox Settings --->Busybox Library Tuning --->[*] Fancy Shell prompts
  输入如下命令,编译并安装。
  # make;make install

  2、编译安装tslib
  # ./autogen.sh
  # ./configure -prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes
  # make;make install

  安装目录指明为 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/
  主要是为了在编译QTE时,不用指定tslib的头文件和库文件,方便以后程序开发。

  注意:在做这一步前,需要做一个目录链接
  在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/目录下
  # ln -s ../../usr/include ./

  3、编译安装QTE
  1)、最基本的配置
  # ./configure -prefix /usr -embedded arm -xplatform qws/linux-arm-g++ -depths 16  -qt-mouse-tslib
  -prefix /usr  使用这个配置,编译后的QTE库文件即可放在目标文件系统的/usr/lib下,而不是默认/usr/local/Trolltech/QtEmbedded-4.5.1 这个很深的目录
  2)、编译
  # make
  # cp lib/* /root/rootfs/usr/lib -rd  将QTE库文件拷贝到根文件系统的目录
  # cp plugins /root/rootfs/usr -rd 将QTE插件目录拷贝到根文件系统的目录

  4、根文件系统的设置
  1)、这时/root/rootfs/usr下应该有 bin etc include lib sbin目录
  tslib生成的etc目录,包含一个tslib的配置文件 nf,编辑此文件,去掉module_raw input前的注释
  # mv etc ../ 移动到rootfs的根目录

  2)、进行一次清理操作
  #arm-linux-strip lib/*.so
  #arm-linux-strip usr/lib/*.so

  3)、编辑etc/profile,添加以下内容
  export QWS_MOUSE_PROTO=Tslib:/dev/event0
  export TSLIB_CONSOLEDEVICE=none
  export TSLIB_FBDEVICE=/dev/fb0
  export TSLIB_TSDEVICE=/dev/event0
  export TSLIB_CALIBFILE=/etc/pointercal
  export TSLIB_CONFFILE=/etc/nf
  export TSLIB_PLUGINDIR=/usr/lib/ts

  最后,通过mkyaffs2image 制作镜像,烧写镜像,启动ts_calibrate校验触屏即可。

其他回答

用交叉编译工具(arm-linux-g++等)把你自己的qt程序用嵌入式版本的qt库交叉编译一下然后烧写到开发板上就可以执行了,当然你qt程序所用到的库也要放上去,并设置到路径(qtdir,path,library_path)等等

相关问答

更多
  • 首先你的linux系统要装QT库 然后你要编译mips还要有Mips的编译器 arm的是arm-linux-gcc mips我不熟悉 然后就可以把Qt creator下的工程拿到linux下来编译了 安装QT库需比较繁琐 你先看看网上的教程 有问题再找我吧
  • 一、准备   busybox 1.14.1   qt-embedded-linux-opensource-src-4.5.1   tslib 1.4   gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)   构建一个新的根文件系统目录,路径为   /root/rootfs   二、具体步骤:   1、编译安装busybox   在官网下载最新版。可以参考如下几处要修改的地方:   Busybox Settings ---> Build Options ---> ...
  • 用交叉编译工具(arm-linux-g++等)把你自己的qt程序用嵌入式版本的qt库交叉编译一下然后烧写到开发板上就可以执行了,当然你qt程序所用到的库也要放上去,并设置到路径(QTDIR,PATH,LIBRARY_PATH)等等
  • 1 下载源码; 2 交叉编译; 3 将libjscon-XXX.so 拷贝到 开发板; 4 编写运用程序,加入json头文件,交叉编译运用程序,编译时加上-json 引入json库文件。
  • 没有ARM-linux这样的说法的,linux都是一样的,只是移植的时候选择ARM的平台,linux本身就支持很多平台的
  • 首先,Linux内核支持多种架构的处理器。 其次,关于移植:打个比方,windows系统都是装在PC机上的,如果你想把这套系统安装在你的智能手机上,那就叫做移植。 在ARM架构的处理器上移植Linux系统就是一个在ARM板上安装Linux内核的过程。首先你要在ARM上烧写一段引导程序(BootLoader),多选用U-Boot,之后对Linux内核进行一定的裁剪定制并生成uImage文件,通过U-Boot下载uImage文件到Flash,同时制作根文件系统。这样,算是完整的在ARM架构上移植Linux的简单 ...
  • 答: 1、可以 2、Qt Creator只是一个集成开发工具,这个版本随意,网上下就可以,Qte不是用最新,而是最好用跟你在Linux开台开发一样的。首先要在Linux下交叉编译Qte的库,然后再将Lib这些文件移植在板子上,最后通过交叉编译好的库去编译你在pc上编写的程序,放到板子上运行!关于交叉编译QT的文章,网上可以搜到很多。 3、WIN7平台的交叉编译工具安装比较麻烦,不推荐使用,直接在Linux去下一个别人交叉工具包,直接解压就好。。去友善的官网,或其他网站下这类的工具 觉得你要先理解什么叫交叉编 ...
  • 这个主要涉及交叉编译的问题。首先,你要安装arm-linux-gcc到你的PC机的linux系统中,然后,再对qt4的图形库进行交叉编译,把交叉编译后的库按装到你的arm板上的linux系统中。 再对你写的qt4的拼图图游戏进行交叉编译,把生成的可执行文件拷贝到arm板的linux中。再执行文件。 总体来说,与在pc机的linux系统按装程序基本一致,不同在于要交叉编译。更多信息,可以在网上搜交叉编译相关,qt4 embedded相关。嵌入linux相关的信息。
  • 答: 1、可以 2、Qt Creator只是一个集成开发工具,这个版本随意,网上下就可以,Qte不是用最新,而是最好用跟你在Linux开台开发一样的。首先要在Linux下交叉编译Qte的库,然后再将Lib这些文件移植在板子上,最后通过交叉编译好的库去编译你在pc上编写的程序,放到板子上运行!关于交叉编译QT的文章,网上可以搜到很多。 3、WIN7平台的交叉编译工具安装比较麻烦,不推荐使用,直接在Linux去下一个别人交叉工具包,直接解压就好。。去友善的官网,或其他网站下这类的工具 觉得你要先理解什么叫交叉编 ...
  • 必须先安装安装xorg,可以先试试轻量级的桌面系统,比如xfce。还有根本不需要移植,直接编译安装就行了

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。