文档库 最新最全的文档下载
当前位置:文档库 › ubuntu下编译驱动程序的准备

ubuntu下编译驱动程序的准备

ubuntu下编译驱动程序的准备

ubuntu不带linux内核源码,需要自己下载安装。

1,查看自己的内核版本

uname -r

2,查看源内的内核源码类表

apt-cache search linux-source

3,下载安装内核源代码

sudo apt-get install linux-source- //我选的是这一个,自己看着办吧

4,等待........

下载完成后,在/usr/src下会有一个文件名为linux-source-

5,解压缩包

tar jxvf linux-source- //看清自己的版本

解压后会生成一个源代码目录/usr/src/linux-source-

6,进入源码目录后,配置文件

make oldconfig

7,生成内核

make

8,疯狂等待,大约1个多小时

9,编译模块

make modules

10,安装模块

make modules_install

大功告成!^_^

下面说一下Makefile文件

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install #PWD当前工作目录的变量

obj-m := hello.o

#hello.o是你要生成的驱动,以后可以自己改

KERNELDIR:=/lib/modules/

#这里别抄,写成你自己的版本,这个目录执行了内核源码目录

PWD:=$(shell pwd) #将当前工作目录赋值该PWD modules:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:

下面是一个经典的Hello,world!例子自己make一下就行了。

#include

#include

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)

{

printk(KERN_ALERT "Hello, world!\n");

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT"Goodbye, cruel world!\n");

}

module_init(hello_init);

module_exit(hello_exit);

本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.wendangku.net/doc/af1701114.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

windows安装交叉编译环境

Duanxx的嵌入式学习: Win7安装交叉编译环境 ——Duanxx ——2015-09-15 ARM-linux的交叉编译环境,一般的教程都是在linux系统(比如ubuntu)上安装linaro的arm-linux-gnueabihf编译环境,然后再安装Eclipse和CDT,这样来实现交叉编译环境的安装。 我个人使用这种方法已经使用了几年了,因为我个人比较喜欢使用Linux系统(我使用的是CentOS),所以感觉很自然。但对于初学者而言,如果对linux系统不熟悉,这个方法非常的麻烦,仅仅是为了编译一个可以在ARM-linux上运行的elf文件,还要装虚拟机,学习linux系统的很多使用方法,挺麻烦的。 这两天试了一下在windows平台上安装交叉编译环境,成功了,这里将详细教程写下来,就当是做个记录。 目录 一、安装Eclipse (2) 二、安装CDT (3) 2.1Eclipse Marketplace 安装CDT (4) 2.2 Install New Software 安装CDT方案1 (4) 2.3 Install New Software 安装CDT方案2 (7) 2.4 手动安装CDT (9) 三、安装minGW (10) 四、安装Linaro ToolChain (10) 五、搭建交叉编译开发环境 (13) 六、RSE将可执行文件传输到ARM上 (26)

一、安装Eclipse Eclipse的下载网址是:https://www.wendangku.net/doc/af1701114.html,/downloads/ 会有下面的这个网页,我打红色框的都可以直接使用,这里其实是无所谓的,因为Eclipse是基于插件的开发环境,如果只是为了开发C++的,可以考虑选择后面一个“Eclipse IDE for c/C++ Developers”。 Eclipse解压后就可以直接使用,见下图中的eclipse.exe,同时注意一下freatures和plugins文件夹。

qtcretor交叉编译设置

QTcreator交叉编译配置 在QTcreator项目中进行qt版本的选择找到qt/bin下的qmake 添加工具链gcce,并找到交叉编译链gcc的路径 添加系统的变量: PATH="/root/CodeSourcery/Xilinx_GNU_Linux/bin:${PATH}" export PATH export CROSS_COMPILE=arm-xilinx-linux-gnueabi- export ZYNQ_QT_INSTALL=/zynq/qt/qt-lib/lib export ZYNQ_CV_INSTALL=/zynq/opencv/opencv-lib/lib 修改工程中的配置文件: 更改INCLUDEPATH += /zynq/opencv/opencv-lib/include LIBS += -L /zynq/opencv/opencv-lib/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy \ -lz -ljpeg -lpng15 -ltiff -lavcodec -lavformat -lavutil -lswscale -lopencv_flann -lopencv_features2d \ -lopencv_calib3d -lopencv_video -lopencv_ml -lx264 开发板挂载sd卡mount /dev/mmc/block0p1,并将运行库复制到/zynq目录 指定开发板上程序运行库路径

zynq> export LD_LIBRARY_PATH=/zynq/opencv/opencv-lib/lib 执行程序./cvMoveDetect -qws 也可以在qtcreator的工程配置文件中指定运行库路径LIBS += -Wl,-rpath,/zynq/opencv/opencv-lib/lib

Ubuntu编译安装Linux内核过程(整理版)

Ubuntu编译Linux内核过程 一、首先解决Ubuntu代理上网的问题 1、这种方法要用到/etc/apt/文件夹下的apt.conf文件。如果您希望apt-get(而不是其他应用程序)一直使用http代理,您可以使用这种方式。 注意:某些情况下,系统安装过程中没有建立apt配置文件。下面的操作将视情况修改现有的配置文件或者新建配置文件。 sudo gedit /etc/apt/apt.conf在您的apt.conf文件中加入下面这行(根据你的实际情况替换yourproxyaddress和proxyport)。Acquire::http::Proxy "http://yourproxyaddress:proxyport";保存apt.conf文件。 如果代理服务器需要登录,那么可以在指定代理服务器地址的时候,用如下格式(根据情况把username,password, yourproxyaddress 和proxyport替换为相应内容): http_proxy=http://username:password@yourproxyaddress:proxyp ort 2、然后在新立得设置http代理,在系统--系统管理--新立得软件包管理器--设置--首选项--网络里也要设置http的代理 二、下载源代码和编译软件的准备 下载内核源代码:https://www.wendangku.net/doc/af1701114.html,/ 注意,点击2.6.39.3内核的F版,即完整版。

如果你懒得去网站点联接,运行下列命令: 代码: $cd ~ $wget https://www.wendangku.net/doc/af1701114.html,/pub/linux/kernel/v2.6/linux-2.6.39.3. tar.bz2 安装有关编译程序。安装make ,gcc, make-kpkg,运行menuconfig 等等和编译内核相关的工具。 安装不了,请检查/etc/apt/sources.list 文件。 安装所需工具包有关命令: 代码: $sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot 三、解压源代码 注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux掌门人linus说解压到任何目录上都可以。当然,linus的说法是正确的。先将压缩包复制到usr/src目录下,然后将压缩包解压到user/src目录下。 如果压缩包现在放在个人主目录的桌面上,则运行下列命令: 代码: $sudo cp Desktop/linux-2.6.39.3.tar.bz2 /usr/src

如何自行编译一个Linux内核的详细资料概述

如何自行编译一个Linux内核的详细资料概述 曾经有一段时间,升级Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 apt 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。 考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能的原因: 你想要简单了解编译内核的过程 你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里 你想要启用标准内核中可能没有添加的硬件支持 你使用的发行版需要你编译内核 你是一个学生,而编译内核是你的任务 不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。 既然这样,让我们来实验一下编译内核的过程。我将使用Ubuntu 16.04 Server 来进行演示。在运行了一次常规的 sudo apt upgrade 之后,当前安装的内核版本是 4.4.0-121。我想要升级内核版本到 4.17,让我们小心地开始吧。 有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 下载内核 我们要做的第一件事是下载内核源码。在 Kernel 找到你要下载的所需内核的URL。找到URL 之后,使用如下命令(我以 4.17 RC2 内核为例)来下载源码文件: wget https://git.kernel/torvalds/t/linux-4.17-rc2.tar.gz

Qt技术文档

Qt技术 QT Creator是跨平台的QT IDE,是一款新的轻量级集成开发环境。它的设计目标是使开发人员能够利用QT这个应用程序框架更加速及轻易的完成开发任务。QT Creator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QT Designer、QT Assistant、QT Linguist、图形化的GDB调试前端,集成Qmake构建工具等。 framebuffer是一种能够提取图形的硬件设备,是用户进入图形界面的很好接口。framebuffer是显存抽象后的一种设备,它允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。有了framebuffer,用户的应用程序不需要对底层的驱动深入了解就能够做出很好的图形。对于用户而言,它和/dev下面的其他设备没有什么区别,用户可以把framebuffer看成一块内存,既可以向这块内存中写人数据,也可以从这块内存中读取数据。显示器将根据相应指定内存块的数据来显示对应的图形界面。 1.1 Qt显示界面的设计与实现 1.1.1 开机界面的设计 为了美化整个软件环境,我们将制作一个开机自动启动的画面,3秒后自动进入主窗口界面。如开机界面显示图如图1-1所示,设计框图如图1-2所示。 开机界面背景图片实现代码如下: QSplashScreen *splash=new QSplashScreen; //启动画面 splash->setPixmap(QPixmap(":/image/开机界面_副本.png")); splash->show(); float t = 0; do { t = ((float)clock()) / CLOCKS_PER_SEC; QCoreApplication::processEvents(); }while( t < 3 );

嵌入式Linux系统内核的配置、编译和烧写

实验二 嵌入式Linux系统内核的配置、编译和烧写 1.实验目的 1)掌握交叉编译的基本概念; 2)掌握配置和编译嵌入式Linux操作系统内核的方法; 3)掌握嵌入式系统的基本架构。 2.实验环境 1)装有Windows系统的计算机; 2)计算机上装有Linux虚拟机软件; 3)嵌入式系统实验箱及相关软硬件(各种线缆、交叉编译工具链等等)。 3.预备知识 1)嵌入式Linux内核的配置和裁剪方法; 2)交叉编译的基本概念及编译嵌入式Linux内核的方法; 3)嵌入式系统的基本架构。 4.实验内容和步骤 4.1 内核的配置和编译——配置内核的MMC支持 1)由于建立交叉编译器的过程很复杂,且涉及汇编等复杂的指令,在这里 我们提供一个制作好的编译器。建立好交叉编译器之后,我们需要完成 内核的编译,首先我们要有一个完整的Linux内核源文件包,目前流行 的源代码版本有Linux 2.4和Linux 2.6内核,我们使用的是Linux 2.6内核; 2)实验步骤: [1]以root用户登录Linux虚拟机,建立一个自己的工作路径(如用命令 “mkdir ‐p /home/user/build”建立工作路径,以下均采用工作路径 /home/user/build),然后将“cross‐3.3.2.tar.bz2、dma‐linux‐2.6.9.tar.gz、 dma‐rootfs.tar.gz”拷贝到工作路径中(利用Windows与虚拟机Linux 之间的共享目录作为中转),并进入工作目录; [2]解压cross‐3.3.2.tar.bz2到当前路径:“tar ‐jxvf cross‐3.3.2.tar.bz2”; [3]解压完成后,把刚刚解压后在当前路径下生成的“3.3.2”文件夹移 动到“/usr/local/arm/”路径下,如果在“/usr/local/”目录下没有“arm” 文件夹,用户创建即可; [4]解压“dma‐linux‐2.6.9.tar.gz”到当前路径下:

嵌入式交叉编译环境的搭建

实验二、嵌入式交叉编译环境的搭建 1、实验目的: 通过本实验使学生掌握交叉编译环境的建立,了解在S3C2440上交叉编译环境搭建的原理及步骤。 2、实验设备及说明 1、安装ubuntu10及vmware的计算机 2、天嵌2440的开发板 3、实验指导书 4、天嵌开发板的超级终端设置 5、天嵌开发板开发文档 6、TQ2440使用手册v2.3---20100125 3、实验内容和步骤 1、安装交叉编译器:EABI4.3.3 ●解压EABI 工具包 命令:tar zxvf /mnt/hgfs/(根据本机压缩包存储路径输入)/EABI 4.3.3.tar.gz –C / ##将压缩包解压到根目录下 ●添加路径至全局变量PATH中 命令:PATH=$PAHT:/opt/EmbedSky/4.3.3/bin (此路径应根据本机的具体情况输入) ●查看全局变量PATH 命令:echo PATH ###查看刚才的添加是否成功 ●查看交叉编译命令是否能够使用 命令:arm-linux-gcc –v ###如果刚才解压、添加变量成功,此时输入命令后,即可以显示命令的版本信息。

2、minicom

●在线安装minicom 命令:apt-get install minicom ●在命令行中键入“minicom”,这就启动了minicom软件。 ●Minicom在启动时默认会进行初始化配置minicom -s ?CTRL+A Z,来查看minicom的帮助 ?CTRL-A O配置minicom的串口参数,选择“Serial port setup”子项,上面列出的配置是minicom启动是的默认配置,用户可以通过键入每一项前的大写字母,分别对每一项进行更改.要对波特率、数据位和停止位进行配置,键入“E”,在该配置界面中,可以键入相应波特率、停止位等对应的字母,即可实现配置,配置完成后按回车键就退出了该配置界面。在确认配置正确后,可键入回车返回上级配置界面,并将其保存为默认配置。 ?

交叉编译qt 4.7.0 加入dbus选项的错误

交叉编译qt 4.7.0 加入dbus选项的错误 D-Bus auto-detection... () arm-linux-g++ -c -pipe -O2 -Wall -W -I../../../mkspecs/qws/linux-arm-g++ -I. -I/usr/local/lib/tslib-arm/include -I/opt/openssl/include -I/opt/dbus130/include/dbus-1.0 -I/opt/dbus130/lib/dbus-1.0/include -o dbus.o dbus.cpp arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/qte4.7.0/build/lib -o dbus dbus.o -L/usr/local/lib/tslib-arm/lib -L/opt/openssl/lib -L/opt/dbus1224/lib dbus.o: In function `main': dbus.cpp:(.text+0x8): undefined reference to `dbus_shutdown' collect2: ld returned 1 exit status make: *** [dbus] 错误1 D-Bus disabled. The QtDBus module cannot be enabled because libdbus-1 version 0.93 was not found. Turn on verbose messaging (-v) to ./configure to see the final report. If you believe this message is in error you may use the

Ubuntu下Android源码修改、编译及运行、launcher定制

环境 Linux 版本:Ubuntu 11.04 (可由10.10的版本进行升级)64位系统 GCC版本:gcc version 4.5.2 Java版本:java version "1.6.0_26" 下载android源码前注意: 1、保证Ubuntu系统中的容量在80G左右,以保证足够的空间来存放android源码以及编译后的相关文件。 2、保证Ubuntu系统进行Internet访问。 联网方法:采用拨号进行连接。相关操作步骤如下所示: 1、虚拟机→设置→硬件→网络适配器→网络连接→桥接 2、启动Ubuntu系统,打开终端(在普通用户下),输入相关命令如下: $ pppoeconf //打开后输入上网账号跟密码,确认保存 $ sudo pon dsl-provider //上网连接命令 经过这两个步骤后就可以进行上网了。 Android源码编译所依赖的tools 01.$ sudo apt-get update 02.$ sudo apt-get -y install git-core 03.$ sudo apt-get -y install gnupg 04.$ sudo apt-get -y install sun-java6-jdk flex 05.$ sudo apt-get -y install bison 06.$ sudo apt-get -y install gperf 07.$ sudo apt-get -y install libsdl-dev 08.$ sudo apt-get -y install libesd0-dev 09.$ sudo apt-get -y install libwxgtk2.6-dev 10.$ sudo apt-get -y install build-essential 11.$ sudo apt-get -y install zip 12.$ sudo apt-get -y install curl 13.$ sudo apt-get -y install libncurses5-dev 14.$ sudo apt-get -y install zlib1g-dev 15.$ sudo apt-get -y install valgrind 注意:(如果是32bit的系统的话,则要更改几个Android.mk文件) 01./external/clearsilver/cgi/Android.mk 02./external/clearsilver/java-jni/Android.mk 03./external/clearsilver/util/Android.mk 04./external/clearsilver/cs/Android.mk 用gedit打开,修改m64为m32即可 另外 将build/core/main.mk中的ifneq (64,$(findstring 64,$(build_arch)))修改为: ifneq (i686,$(findstring i686,$(build_arch)))

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转) linux是如何组成的? 答:linux是由用户空间和内核空间组成的 为什么要划分用户空间和内核空间? 答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的 安全性,比如X86可以有4种模式RING0~RING3 RING0特权模式给LINUX内核空间RING3给用户空间 linux内核是如何组成的? 答:linux内核由SCI(System Call Interface)系统调用接口、PM(Process Management)进程管理、MM(Memory Management)内存管理、Arch、 VFS(Virtual File Systerm)虚拟文件系统、NS(Network Stack)网络协议栈、DD(Device Drivers)设备驱动 linux 内核源代码 linux内核源代码是如何组成或目录结构? 答:arc目录存放一些与CPU体系结构相关的代码其中第个CPU子目录以分解boot,mm,kerner等子目录 block目录部分块设备驱动代码 crypto目录加密、压缩、CRC校验算法 documentation 内核文档 drivers 设备驱动 fs 存放各种文件系统的实现代码 include 内核所需要的头文件。与平台无关的头文件入在include/linux子目录下,与平台相关的头文件则放在相应的子目录中 init 内核初始化代码 ipc 进程间通信的实现代码 kernel Linux大多数关键的核心功能者是在这个目录实现(程序调度,进程控制,模块化) lib 库文件代码 mm 与平台无关的内存管理,与平台相关的放在相应的arch/CPU目录net 各种网络协议的实现代码,注意而不是驱动 samples 内核编程的范例 scripts 配置内核的脚本 security SElinux的模块 sound 音频设备的驱动程序 usr cpip命令实现程序 virt 内核虚拟机 内核配置与编译 一、清除 make clean 删除编译文件但保留配置文件

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.wendangku.net/doc/af1701114.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

linux内核编译和生成makefile文件实验报告

操作系统实验报告 姓名:学号: 一、实验题目 1.编译linux内核 2.使用autoconf和automake工具为project工程自动生成Makefile,并测试 3.在内核中添加一个模块 二、实验目的 1.了解一些命令提示符,也里了解一些linux系统的操作。 2.练习使用autoconf和automake工具自动生成Makefile,使同学们了解Makefile的生成原理,熟悉linux编程开发环境 三、实验要求 1使用静态库编译链接swap.c,同时使用动态库编译链接myadd.c。可运行程序生成在src/main目录下。 2要求独立完成,按时提交 四、设计思路和流程图(如:包括主要数据结构及其说明、测试数据的设计及测试结果分析) 1.Makefile的流程图: 2.内核的编译基本操作 1.在ubuntu环境下获取内核源码 2.解压内核源码用命令符:tar xvf linux- 3.18.12.tar.xz 3.配置内核特性:make allnoconfig 4.编译内核:make 5.安装内核:make install

6.测试:cat/boot/grub/grub.conf 7.重启系统:sudo reboot,看是否成功的安装上了内核 8.详情及结构见附录 3.生成makefile文件: 1.用老师给的projec里的main.c函数。 2.需要使用automake和autoconf两个工具,所以用命令符:sudo apt-get install autoconf 进行安装。 3.进入主函数所在目录执行命令:autoscan,这时会在目录下生成两个文件 autoscan.log和configure.scan,将configure.Scan改名为configure.ac,同时用gedit打开,打开后文件修改后的如下: # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(main,1.0) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile) 4.新建Makefile文件,如下: AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=main first_SOURCES=main.c 5.运行命令aclocal 命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。 6.运行命令autoheader 命令成功之后,会在目录下产生config.h.in这个新文件。 7.运行命令autoconf 命令成功之后,会在目录下产生configure这个新文件。 8.运行命令automake --add-missing输出结果为: Configure.ac:11:installing./compile’ Configure.ac:8:installing ‘.install-sh’ Configure.ac:8:installing ‘./missing’ Makefile.am:installing ‘./decomp’ 9. 命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。 10.运行命令./configure就可以自动生成Makefile。 4.添加内核模块

ubuntu10.04全过程创建交叉编译环境

ubuntu10.04下建立交叉编译工具链(支持软浮点)全过程 参考了网上的不少的资料,花了五个小时终于完成了,记录下全过程供大家分享。 用到的源码包如下,建议新手全部放在/home/usr/downloads/ 目录下。以下操作在用户权限下进行。 ======================================================================= arm-linux-gcc-3.4.1.tar.gz glibc-2.3.3.tar.gz linux-2.6.8.tar.gz crosstool-0.43.tar.gz binutils-2.15.tar.gz glibc-linuxthreads-2.3.3.tar.gz binutils-2.18.tar.gz --安装用 编译一次至少要花半个小时,如果因为依赖软件没有安装中途会报错退出,只有从头再来,那样很浪费时间的。 sudo apt-get install bison flex build-essential patch libncurses5-dev 由于ubuntu10.04自带的ld ,as版本太高的原因,需要安装binutils的2.18版本,然后替换系统中的2.20版本。方法如下: $cd downloads $tar xzvf binutils-2.18.tar.gz $cd binutils-2.18 $./configure --prefix=/tmp/binutils --disable-nls (-prefix后面的是生成可执行文件存放的位置可以自己定义) $make all $make install 编译成功后在/tmp/binutils/bin/中就生成了ld和as程序的可执行文件 重新链接/usr/bin/ld 和/usr/bin/as文件 $sudo rm /usr/bin/ld /usr/bin/as //删除2.20的ld,as $sudo ln –s /tmp/binutils/bin/ld /usr/bin/ $sudo ln –s /tmp/binutils/bin/as /usr/bin/ 然后可运行ld –v 和as –v 查看版本是否为2.18。 安装2.18版本可解决出现的 ld as " version too old "问题。 2. ubuntu10.04下默认的GCC版本是4.4.3,但这个不是版本越高越好,版本太高,对语法什么的要求也高,编译不成功,降低版本吧: #sudo apt-get install gcc-4.1 //安装4.1的GCC,需要联网 #sudo rm /usr/bin/gcc //删除之前4.4.3的快捷方式,4.4.3的GCC并未删除#sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc //建立4.1的快捷方式 这是由于crosstool中定义了GCC的版本的上下线,最高也就到4.1,在其配置的时候会对这个版本信息进行检测,不在其规定范围就报错了。 3.修改sh版本 如果运行

在Ubuntu上编译android

在Ubuntu7.10上编译android 1 概述 上个星期看到android开放源代码的消息,虽然觉得Google的这个动作会对业界产生很大影响,但没有时间仔细看,只浏览了Project layout。今天上午一个网友在mail中说已经编译、运行过android。我趁着中午休息时间,在一个Ubuntu7.10的虚拟机上编译、运行了一下。 我在这个虚拟机上编译过openmoko、poky。相对于这两个使用OpenEmbedded的平台,android的编译要简单一些,快一些。我在编译openmoko和poky时,将所有下载包都保存在一个目录中,将编译目录的sources子目录指向这个目录。这样做,一方面即使以后有些链接失效,也还可以编起来(其实编译时都不需要连接外网);另一方面在重新编译时,不用重新下载,可以加快编译速度。即使这样,完全编译一次poky也要一个晚上。编译android时,下载用了1个小时,编译也只需要1个小时。 2 编译中的两个小问题 2.1 python和JDK Google网站对编译过程的介绍还是很清晰的。不过在介绍其它软件包时,都给出了apt-get命令,却单独给出了python和JDK的链接地址,容易对读者产生误导,以为要手工安装这两个软件。其实这两个软件也应该通过apt-get安装。特别是python,如果从源代码安装,可能因为依赖其它软件,导致一些组件编译失败,影响android的编译。而且python 2.6的源代码包没有提供make uninstall,卸载也比较麻烦。其实我们只需要一个apt-get命令,就可以安装所有依赖的软件。 2.2 "fatal: git 1.5.4 or later required" 在Ubuntu7.10上执行repo init时,会出现"fatal: git 1.5.4 or later required"的错误提示。在Ubuntu8.04上编译没有这个问题。下面的流程里会介绍怎样解决这个问题。 3 在Ubuntu7.10上的编译流程

Qt移植说明文件

一般而言,Qt应用程序的内容可分为Qt库的编译,Qt库的移植和基于Qt的应用程序的移植。Qt库的编译所花费的耗线性时间代价是最长的,而Qt库的移植是比较简单的一个工作,只需要让串口发送数据到开发板上即可,笔者本人使用的是虚拟机提供的一个共享工具 wmwate-tools,在拷贝某些库的时候会出现不可以预知的错误,重试也无法解决这个问题,解决办法在于把库目录打包共享,这样的出错几率会比较低。最后,应用程序的移植,这部分所花费的非线性时间应该是最长的,在移植调试的过程中将会出现很多很多未能预知的问题,详细的解答将会在本文末尾出做详细笔录。 1.编译的环境和所需要资源: Qt源码包:Qt4.6源码包:qt-everywhere-opensource-src-4.6.3.tar.gz https://www.wendangku.net/doc/af1701114.html,/qt/source/qt-everywhere-opensourc e-src-4.6.3.tar.gz 交叉编译工具: arm-linux-gcc 4.1.2 arm920t-eabi.tar.gz 触摸屏校验工具: tslib1.4 PC虚拟机运行的OS :CentOS-5.4 2.安装交叉编译器: 主要是解压后要在设置交叉编译器的路径信息,即要为它设置一个环境变量。 把arm920t-eabi.tar.gz 放到/opt 目录下,解压该文件: # tar xzvf arm920t-eabi.tar.gz 必须说明的是,网上转载该交叉编译器解压开来,产生的是一个 /opt/toolchains/arm920t-eabi目录,在这里我们进行目录移动处理,把解压开来的/opt/toolchains/arm920t-eabi目录下面的/toolchains目录的所有内容剪切到系统/opt下面去,同时删除解压开来的/opt目录。 #gedit /root/.bashrc 这是编辑/root/.bashrc文件的命令,在末行添加上交叉编译器的路径信息: 使用source命令重新执行刚修改过的初始化文件,而不必重启机器。 # source /root/.bashrc

在ubuntu 10.10(2.6.35.22) 编译安装linux-2.6.35.13内核

在ubuntu 10.10(2.6.35.22) 编译安装linux-2.6.35.13内核 第一步:准备工作 打开终端获得root权限:sudo su 然后安装编译内核时需要的工具: apt-get install build-essential kernel-package libncurses5-dev libqt3-headers build-essential (基本的编程库(gcc, make等) kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具) libncurses5-dev (make menuconfig要调用的) libqt3-headers (make xconfig要调用的) 其他工具在升级过程中可以按提示安装 第二步:到https://www.wendangku.net/doc/af1701114.html,下载内核源代码linux-2.6.35.13.tar.gz 假设下载在root目录(具体路径个人喜好),然后解压到/usr/src/linux-2.6.35.13目录里 tar zxvf /root/linux-2.6.35.13.tar.gz -C /usr/src 解压后会在/usr/src生成新文件夹linux-2.6.35.13 第三步:配置 把正在使用中的内核配置文件/usr/src/linux-headers-2.6.35-22-generic/.config 拷到/usr/src/linux-2.6.35.13目录下 cp /usr/src/linux-headers-2.6.35-22-generic/.config /usr/src/linux-2.6.35.13 执行: cd /usr/src/linux-2.6.35.13 make menuconfig 终端会弹出一个配置界面,注意主菜单最后有两项: Load an Alternate Configuration File Save an Alternate Configuration File 先选Load an Alternate Configuration File,意思是利用当前的内核配置详单来设置将要编译的内核,然后选Save an Alternate Configuration File,最后退出配置界面。 第四步:开如编译安装新内核 //执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行) //上面这个操作会把前面拷贝的.config干掉,所以。。。你懂的。。。 执行:sudo make(编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度) 然后:sudo make install(安装内核文件到/boot目录,安装过程会自动修改GRUB启动菜单) 再:sudo make modules(编译内核需要的模块) 再:sudo make modules_install(安装模块到/lib/modules目录) 最后创建initrd文件: mkinitramfs -o /boot/initrd.img-2.6.35.13

在HI3531上移植和运行QT4.8.6

在HI3531上移植和运行QT4.8.6 1、前言: 近段有点时间,想把QT移植到HI3531上,在网上查找了很多资料,但都不是很全面,有些有问题也没有得到很好的体现。 2、环境: PC:ubuntu10.04 HI3531交叉工具链:arm-hisiv100nptl-linux- QT版本:qt4.8.6(Qt libraries 4.8.6 for embedded Linux (230 MB) QT-Creator版本:qt-creator-linux-x86-opensource-2.4.1.bin 3、交叉编译: 1)进入qt-everywhere-opensource-src-4.8.6/mkspecs/qws目录,新建 linux-hisi3531nptl-g++目录,复制linux-arm-g++目录下的所有文件到linux-hisi3531nptl-g++ cp –a linux-arm-g++/* linux-hisi3531nptl-g++ 2)进入linux-hisi3531nptl-g++,修改文件qmake.conf # modifications to g++.conf QMAKE_CC = arm-hisiv100nptl-linux-gcc QMAKE_CXX = arm-hisiv100nptl-linux-g++ QMAKE_LINK = arm-hisiv100nptl-linux-g++ QMAKE_LINK_SHLIB = arm-hisiv100nptl-linux-g++ # modifications to linux.conf QMAKE_AR = arm-hisiv100nptl-linux-ar cqs QMAKE_OBJCOPY = arm-hisiv100nptl-linux-objcopy QMAKE_STRIP = arm-hisiv100nptl-linux-strip 3)打开文件qplatformdefs.h增加 #undef O_CLOEXEC 此处主要为解决:编译过程中找不到accept4函数问题 4)安装X11库 sudo apt-get install libX11-dev libXext-dev libXtst-dev 5)返回源码目录qt-everywhere-opensource-src-4.8.6进行配置 ./configure --prefix=/opt/qt4.8.6 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-hisi3531nptl-g++ -little-endian -qt-freetype -no-opengl -no-glib

相关文档
相关文档 最新文档