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

合集下载

交叉编译流程

交叉编译流程

交叉编译流程
交叉编译的过程可以分为以下步骤:
1. 选择目标体系结构:确定要交叉编译的目标体系结构,例如不同的硬件平台或操作系统。

2. 安装交叉编译工具链:交叉编译工具链包括交叉编译器、链接器、调试器和库文件等,用于将源代码编译成目标平台可执行程序。

这些工具可以通过官方提供的源代码进行编译,也可以通过第三方工具包进行安装。

3. 配置交叉编译环境:确保系统能够正确地找到和使用交叉编译工具链。

这通常涉及将工具链的路径添加到环境变量中,并在构建系统中设置相应的配置参数。

4. 运行configure命令:进入源码包根目录下,运行configure命令。


命令有很多参数可配置,可以用configure –help来查看,在交叉编译过程中可设置–host、–target、–build这几个参数。

这些参数配置后,configure时会读取源码目录下面的文件,查找、检查设置的参数是否支持。

完成以上步骤后,就可以开始进行交叉编译了。

如果还有其他疑问,建议咨询专业编程人员以获取更全面的信息。

交叉编译环境以及开发板上-binsh:.hello:notfound(使用arm-linu。。。

交叉编译环境以及开发板上-binsh:.hello:notfound(使用arm-linu。。。

交叉编译环境以及开发板上-binsh:.hello:notfound(使⽤arm-linu。

⽬标板是S3C2440.⾄于交叉编译环境的搭建就不多说了,⽹上很多教程.搭建好了交叉编译环境后,第⼀件事就是传说中的”Hello,World!”.⼀. 主机编译环节我使⽤的系统是ubuntu10.04,搭建好交叉编译环境后,终端输⼊arm-linux-gcc -v能够正常显⽰版本信息,但是输⼊sudo arm-linux-gcc -v后却显⽰命令⽆法找到.我试过很多种⽅法,⽐如sudo -s切换到root后,编辑$PATH,将编译器路径加⼊.然后exit到普通⽤户.仍然不能执⾏sudo arm-linux-gcc -v. 这⾥如果哪位⼤⽜知道是什么原因的可以留⾔告诉我,谢谢:)由于编译.c的⽂件后,要产⽣新的⽂件,因此要super的权限.⼜不能使⽤sudo arm-linux-gcc,于是可以先sudo -s到root⽤户,再使⽤arm-liunux-gcc来进⾏编译.⼆. ⽬标板执⾏环节我是使⽤FTP在主机和⽬标板之间传送⽂件.传送过去后要注意改变权限.这⾥要注意⼏点:1. 要确定ftp过来后的⽂件的默认的存放路径.这个只要在⽬标机的终端机上确认下即可.(这个地⽅没有确认可能就会显⽰找不到命令)2. 传送过来的⽂件要更改权限才能运⾏.可以⽤:chmod 777 hellochmod +x hello3. 执⾏./hello这时,报错:-/bin/sh: ./hello: not found三. 问题排除⽤过绝对路径也试过之后就确定并不是⽂件是否存在的问题,⽽是这个⽂件并不能被执⾏.GOOGLE之后可以发现,排除上⾯提到问题后,就将问题定位到动态链接库上.于是在主机上⽤arm-linux-gcc -static -o 来进⾏静态编译.然后将新产⽣的⽂件传到⽬标板上.可以发现通过静态编译的⽂件明显⽐动态编译的要⼤.然后再次执⾏./hello 可以看到屏幕上出现了久违的Hello,World!问题到这⾥还没有完,我们可以再思考下怎么彻底解决,⽽不是每次都使⽤静态编译.既然是动态库引起的问题,那么应该和编译器的版本有关.在安装编译环境的时候同时安装了3.4.1和4.3.3两个版本.⽤户⼿册上说其中3.4.1是⽤来编译u-boot的,4.3.3版本是⽤来编译Linux内核和Qtipia的,两个版本均可以⽤来编译应⽤程序.既然我们的内核使⽤4.3.3编译的,⽽我们刚才编译hello是使⽤3.4.1编译的,那么会不会是这个原因呢?于是我们试⼀下,将$PATH中的原来包含3.4.1/bin 的路径改为 4.4.3/bin . 修改的⽅法⽹上有很多.(直接export PATH=”想要的路径”)再次编译,下载.⽬标板上执⾏,成功显⽰”Hello,World!”.可以看到系统中动态库的⽀持和编译器还是有关的./lzjsky/p/3730183.html。

交叉编译工具链的安装配置

交叉编译工具链的安装配置

交叉工具链的生成/uid-9185047-id-3158569.html软件平台:ubuntu 10.10主机编译器:gcc 4.5.1硬件平台:s3c24101、准备环境sudo apt-get install bison flex texinfo automake libtool cvs patch libncurses5-dev aria2 curl g++ subversion gawk cvsd expat gperf libexpat-dev注:有的没安装,第4步无法生成makefile,要先安装gperf2、下载crosstool-ng软件包crosstool-ng-1.17.0.tar.bz23、相应目录的建立sudo mkdir -p /usr/local/armsudo chmod 777 /usr/local/arm // 将arm目录权限设置为777cd /usr/local/armmkdir 4.7.2sudo mkdir -p /home/crosstoolcd /home/s3c2410/crosstoolsudo mkdir crosstool-build crosstool-install src-4.7.2(编译目录、安装目录、目标源码目录)4、安装crosstool-ngcp crosstool-ng-1.17.0.tar.bz2 /home/s3c2410/crosstool/解压crosstool-ng-1.17.0.tar.bz2,tar -xvf crosstool-ng-1.17.0.tar.bz2进入目录,进行配置:cd /home/s3c2410/crosstool/crosstool-ng-1.17.0将/home/s3c2410/crosstool/crosstool-install/lib/ct-ng.1.17.0/下的p cp到/etc/bash_completion.d配置安装目录为/home/s3c2410/crosstool/crosstool-install注:有的没安装gperf,无法生成makefile,要先安装gperfsudo ./configure --prefix=/home/crosstool/crosstool-installsudo make --编译sudo make install --安装5、配置编译的交叉编译工具链cd /home/s3c2410/crosstool/crosstool-build --进入编译目录cp/home/s3c2410/crosstool/crosstool-ng-1.17.0/samples/arm-unknown-linu x-gnueabi/* ./sudo cp crosstool.config .config --把crosstool-config --当作默认的配置文件sudo /home/crosstool/crosstool-install/bin/ct-ng menuconfig --图形界面进行配置,若该句无法执行可能是终端窗口太小弹出以下菜单,此菜单主要用于交叉编译工具链的环境配置。

ubuntu下搭建MIPS交叉编译环境

ubuntu下搭建MIPS交叉编译环境

ubuntu下搭建MIPS交叉编译环境 由于要在本地编译程序,在嵌⼊式系统上运⾏,因此需要在本地装编译器,⽬前主要需要mipsel-linux-gcc。

之前⼀直以为可以⽤apt-get install找到,结果找了好久找不到,发现还是得⾃⼰编。

主要是参考上⾯的那个链接,然后这对⾃⼰需求改了改配置。

1. 环境系统:Ubuntu 16.04软件: buildroot该软件可以编译⽤于 mips, arm等等的C编译器。

2. 下载tar -jxvfcd buildroot3. 配置buildroot (重要)make cleanmake menuconfig会出现选择菜单,如下图:选择第⼀项“Target Architecture”, 改成 MIPS (little endian)另外,选择“Toolchain”, 将"kernel headers"改成⾃⼰主机上的Linux版本(及运⾏改编译器的主机)可以在主机上通过 uname -r 或者 cat /proc/version查看。

原⽣的是只有gcc部分,没有g++部分,需要对编译C++程序,则在菜单⾥选择 Enable c++选项(按 y 选取)。

⽤于编译python的配置选项我主要⽤这个来编译python放在嵌⼊式设备系统上⽤,最开始就按照上⾯的选项,编译⼀般的程序没问题,编译python会出现:unknow type name 'wchar_t' 错误,这个需要在这⾥的⼯具⾥选⼏个选项;a1. 在配置⾥选择对wchar的⽀持;a2. 退出Target options,进⼊Target packages,在Target packages⾥再添加⼏个选项(这⾥我没看不配置这个会出什么问题,这个⾥⾯到底做什么的,我直接按照进⼊Interpreter lanaguages and scripting 选项,选择python选项,然后吧core python modules⾥的都选了吧~(编译⼀次太费时了,缺个什么⼜得重新编译这个⼯具链)配置完了后,保存,并退出。

在Ubuntu10.04下驱动开发环境搭建

在Ubuntu10.04下驱动开发环境搭建

在Ubuntu10.04驱动开发环境搭建一、准备开发工具开发工具主要有gcc、gdb、make在Ubuntu中可以通过下面这个命令安装:$apt-get install build-essential我没有执行上面的命令,因为我在之前编译过Android,相关工具已经配置好了:$sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev x11proto-core-dev libx11-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos libncurses5-dev二、下载Linux源代码linux源码可以通过以下几种途径获得:1)直接去下载2)通过包管理工具下载源码用下面指令查看可用的源码包:$ sudo apt-cache search linux-sourcelinux-source - Linux kernel source with Ubuntu patcheslinux-source-2.6.32 - Linux kernel source for version 2.6.32 with Ubuntu patches在Ubuntu中可以通过下面这个命令下载:$apt-get install linux-source-(版本号)$sudo apt-get install linux-source-2.6.32下载后的文件linux-source-2.6.32.tar.bz2在/usr/src目录中,解压:$su – root$cd /usr/src$tar jxvf linux-source-2.6.32.tar.bz2解压后在/usr/src目录下产生了一个linux-source-2.6.32源码目录三、编译内核依次执行下列命令(必须都执行,否则编译错误,如果不是root用户,命令前加sudo):1)配置内核$su – root$cd /usr/src/linux-source-2.6.32$make config或$make menuconfig或者$ sudo cp ../linux-headers-2.6.32-21-generic/.config ./.config如果当前运行内核打开了CONFIG_IKCONFIG_PROC参数,则可以$zcat /proc/config.gz > .config$make oldconfig2)编译内核2.6版本后前两步不需要,直接make即可$make prepare$make scripts$make3)安装模块$make modules 这一步不需要$make module_install执行结束之后,会在/lib/modules下生成新的目录/lib/modules/2.6.32.44+drm33.19四、生成镜像文件1)生成内核镜像文件$make bzImage执行完成后将在arch/i386/boot/目录下生成bzImage镜像文件,使用下面命令安装到系统的/boot目录下:$sudo make installsh /usr/src/linux-source-2.6.32/arch/x86/boot/install.sh 2.6.32.44+drm33.19 arch/x86/boot/bzImage \ System.map "/boot"命令完成后在/boot目录下,将多了vmlinuz-2.6.32.44+drm33.19和System.map-2.6.32.44+drm33.19两个文件或者直接拷贝$ sudo cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.32.44+drm33.192)生成要载入ramdisk的映像文件如果linux系统按照在scsi磁盘上,这部是必须的,否则可以跳过。

Workbench Linux IDE安装与使用说明

Workbench Linux IDE安装与使用说明

Workbench Linux IDE安装与使用简介1、安装Workbench IDE安装环境为虚拟机VMware7.1.3、Ubuntu10.04.3LTS Linux平台。

1.1、设置VMware共享目录sharedfolder,将Wind River linux4.1安装文件复制到共享目录sharedfolder,在Ubuntu终端中查看安装文件是否完整。

1.2、判断Ubuntu Linux系统位数,安装Workbench平台工程编译所需工具包。

显示i686i386均是32位操作系统,x86_64是64位操作系统。

如果是32位操作系统,输入如下命令安装工具包,如果是64位操作系统,查看Wind River linux4.1安装文件目录下的说明文件进行相应安装。

sudo apt-get install autoconf automake\libtool g++g++-4.4comerr-dev docbook-xml docbook-xsl\doxygen python-libxml2zip gettext libstdc++6-4.4-dev\gconf2texlive-base texlive-binaries libltdl-dev\libncurses5-dev libreadline5-dev libxml2-dev\zlib1g-dev patch ss-dev texinfo tcl8.4portmap\x11proto-core-dev x11proto-xext-dev xtrans-dev\libx11-dev libxcb1libxext-dev libxinerama-dev\tex-common xutils-dev x11-xkb-utils libcap-dev\libexpat1-dev rarian-compat groff-base time libacl1-dev\gawk xsltproc base-files bash bc binutils bsdmainutils\bzip2cdparanoia coreutils cpio cpp-4.4cups-bsd\cups-client cvs debianutils desktop-file-utils\diffutils dpkg e2fslibs ed file findutils fontconfig\gcc-4.4gconf2ghostscript gnupg grep gzip hostname\imagemagick install-info less libaccess-bridge-java\libaccess-bridge-java-jni libasound2libblkid1\libc-bin libc-dev-bin libc6libc6-dev libcap2\libcomerr2libexpat1libgcc1libgl1-mesa-glx\libidn11libkeyutils1liblocale-gettext-perl\libmagic1libncurses5libreadline5libsensors4\libss2libstdc++6libuuid1libx11-6libxau6libxdmcp6\libxext-dev libxext6libxml2-utils libxrandr2\libxrender1linux-headers-2.6.32-22linux-image-2.6.32-22-generic-pae\linux-libc-dev locales login lzma make man-db manpages-dev\mawk mlocate mono-runtime ncurses-base ncurses-bin\net-tools ntpdate openjdk-6-jre-headless openjdk-6-jre-lib\openssh-client passwd perl perl-base perl-modules\pkg-config procps python-apport python-gst0.10\python-imaging python-zope.interface python2.6\python2.6-minimal rsync sane-utils sed shared-mime-info\sysv-rc sysvinit-utils tar tzdata udev unzip util-linux\w3m x11-utils x11-xserver-utils x11proto-kb-dev\xauth xfonts-encodings xfonts-utils xorg-docs-core\xterm zip zlib1g1.3、在Ubuntu中/bin/sh默认指向dash,为解决在Workbench中因此产生的创建平台工程出错的问题,输入如下命令,改变/bin/sh指向bash。

实验报告-linux环境开发

实验报告-linux环境开发

实验报告- 一、交叉编译环境搭建:在没有root 用户权限时,用sudo 来执行超级权限的命令。

解压缩后,最好要加入path 中,方便使用。

Path 文件在vim /home/ubuntu/.bashrc 加入的语句为export PATH=$PATH:/usr/local/arm/2.95.3/bin二、Ubuntu 10.04 下安装配置NFS安装nfs后,要创建共享目录,是为了上传文件用,而串口作为命令控制和输出的功能。

而且必须要设定好权限允许读写。

然后重启nfs服务。

注意:实际的程序文件保存在共享文件夹后,并没有上传到板卡的存储上,还是存在在宿主机的存储中,两者mount在一起,运行时,板卡执行是共享文件夹的程序。

三、挂载nfs文件系统配置minicom, /dev/ttyS0是表示com串口端口1,配置ip后,挂载nfs文件系统,mount两个文件夹。

四、Hello程序测试用arm-linux-gcc 来编译文件,copy到共享目录后,在mincom里执行程序。

五、编程实验1、Client程序:若是自己创建的配置文件,需要替换最后的回车符为文字结束符。

2、server程序:在while中不断等待客户端连入时,需要把每次READ输入参数的功能创建一个新的线程来响应,而不影响下一次客户端的连入。

ret=pthread_create(&id,NULL,(void*)thread,NULL);创建一个新的线程。

这个thread函数里完成的功能是,一旦客户端输入,即刻打出输入字符,并close这个线程。

3、makefile:执行顺序与行排列无关,注意编译要用超级用户,并且server 程序编译要带 lpthread,连接多线程的库。

综述,第一次实际接触到板卡,对开发过程和开发模式有了实质性的飞跃。

对linux下的开发有了初步的了解。

并发现了很多自己存在的问题。

理论和实际操作有很大差距,在实际操作时,会出现很多想象不到的问题。

UBUNTU OPENCV 环境搭建

UBUNTU  OPENCV  环境搭建

Opencv交叉编译到ARM(基于Qt)一、开发环境:环境:ubuntu10.04交叉编译工具:gcc version4.5.1(ctng-1.8.1-FA)友善的东西opencv版本:OpenCV-2.3.1a.tar.bz2(这里可以下载:/projects/opencvlibrary/files/)cmake:cmake version2.8.0()*:前提是Qt交叉编译已经完成,并能正常使用。

一些依赖:在终端运行:sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev安装:cmakeapt-get install cmake-guiapt-get install cmake解压:tar xvf OpenCV-2.3.1.tar.bz2我使用的是天嵌提供的交叉编译工具EABI_4.3.3。

安装在/opt/EmbedSky/4.3.3/bin/目录下,解压后,进入目录cd OpenCV-2.3.1运行:cmake-gui如果没有安装,系统会提示你安装选择source file 选择build目录点configure然后选择:next填路径:Operating System:arm-none-linuxCompilers:是交叉编译工具GCC与G++的目录,图中是我的目录Target Root:****点Finish然后再回到Cmake目录下:在这里选择该先与不先的东西,同时因为我之前在x86上编译过所以我把CMAKE_INSTALL_PREFIX改成:/usr/local/arm同时添加了WITH_QT因为添加WITH_QT_OPENGL时编译出错,所以后来去掉了。

Ubuntu 10.04运用crosstool-ng-1.9.0建立arm-linux交叉工具链

Ubuntu 10.04运用crosstool-ng-1.9.0建立arm-linux交叉工具链

Ubuntu 10.04下运用crosstool-ng-1.9.0建立arm-linux交叉工具链构建一个交叉工具链供嵌入式系统开发使用是一个令人恐惧的景象,需要钢铁般的意志,需要几天(如果不是几个星期)的功夫,需要具备许多的 Unix 和GNU 知识……”正式基于这一点,我们选择开源工具crosstool-ng,来制作自己的交叉编译工具链。

Crosstool现在也有好几个版本,在这里我选择crosstool-ng-1.9.0这个工具包。

我所选的主机系统是Ubuntu10.04。

在制作交叉编译工具之前要安装各种各样的编译工具,因为Ubuntu系统的方便性,我们可以通过具体的命令在线安装所需的软件。

下面将是具体的制作交叉编译的过程;一、安装所需的工具包$ sudo apt-get install g++ libncurses5-dev bison flex texinfo automake libtool patch gcj cvs cvsd gawk二、下载交叉编译工具所用的文件,在制作交叉编译的过程中,需要在线下载这个编译工具包,考虑到网速的问题和编译的时间问题,提前将这些包下载下来,放在指定的目录下,可以大大节省很多的编译时间,考虑到各种包的下载问题,这个百度文库又不能上传软件包,我就将所有的下载路径附在文章后面,同仁们可以去具体的地方下载!三、安装crosstool-ng-1.9.0.tar.bz2的工具。

安装所需的crosstool-ng-1.9.0,也可在这个地址下/old_news下载crosstool-ng的工具包。

下面是详细的安装步骤:#cd //回到家目录#mkdir crosstool //建立crosstool目录#cp ~/下载/tar/crosstool-ng-1.9.0.tar.bz2 ./crosstool //拷贝crosstool源码包到crosstool目录下#cd crosstool //进入crosstool目录#tar jxvf crosstool-ng-1.9.0.tar.bz2 //解压源码包考虑到后续要用的各种目录,我这里先建立好所需的目录#mkdir crosstool-build crosstool-install src //解压完后建立安装目录编译目录和源码包目录,这几个目录和crosstool-ng-1.9.0目录并列,如下图所示:#cd crosstool-ng-1.9.0 //进入crosstool目录#./configure --prefix=~/crosstool/crosstool-install# make //编译# sudo make install //安装#cd crosstool-build/ //进入crosstool-build目录#cp ../crosstool-ng-1.9.0/samples/arm-unknown-linux-gnueabi/* ./ //拷贝交叉工具链到crosstool-build目录下#mv crosstool.config .config //修改文件名#../crosstool-install/bin/ct-ng menuconfig此刻会出现一个图形配置界面,在此配置界面下,可以按照自己开发板的实际情况来进行配置:1、设定源码包路径和交叉编译器的安装路径。

Ubuntu 10.04(64位)下载并编译 Android 2.2 源码

Ubuntu 10.04(64位)下载并编译 Android 2.2 源码

Ubuntu 10.04(64位)下载并编译Android 2.2 源码[只有11条命令]为了方便,我把所有操作写成了命令,按顺序(软件安装--源码下载--编译)执行成功即可:1. sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-devlibx11-dev lib32readline5-dev lib32z-dev java-common unixodbc2. sudo apt-get install sun-java6-jdk3. cd4. mkdir -p software/bin5. curl /repo >software/bin/repo6. chmod a+x software/bin/repo7. mkdir -p software/android/src/new8. cd software/android/src/new9. repo init -u git:///platform/manifest.git -b froyo10. repo sync11. make -j4=========================================================== ======================================================== 1.前言本文叙述了如何从零开始搭建基于Google官方Android 2.2.1(froyo)源码的开发环境,包括如何下载源代码、编译源代码,以及在模拟器中运行编译生成的镜像。

文中开发机是基于Ubuntu 10.04的,同样适用于其他版本的Ubuntu。

关于ubuntu与树莓派 qt5交叉编译环境搭建

关于ubuntu与树莓派 qt5交叉编译环境搭建

关于ubuntu与树莓派的qt交叉编译环境的搭建设备及环境版本:1、树莓派镜像2016-02-26-raspbian-jessie.img(官网下载)(绝对不能用stretch版!)2、cross-compile-tools-master.zip3、gcc-4.7-linaro-rpi-gnueabihf.tbz4、qt-everywhere-opensource-src-5.3.2.tar.gz(官网下载)版本要和树莓派中的qt保持一致Ubuntu 提前准备1.1 gcc编译环境安装1.2安装openGL1.3 如果您的ubuntu为64位则需要32位软件支持:sudo apt-get install ia32-libs如果ubuntu版本过提示没有ia32-libs高,请安装下面一套sudo apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxc b-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxc b-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev (32位的ubuntu可以忽略此步骤)1.4在home中创建文件夹opt用来下载存放工程中需要使用的软件。

*1.5在~/opt中使用git clone git://code.qt.io/qt/qt5.git,拷贝一份qt5取代qt-everywhere-o pensource如使用上述替代方案请在~/opt/qt5文件夹下执行 ./init-repository初始化qt5储存库。

Ubuntu 10.04下编译Android源码全过程

Ubuntu 10.04下编译Android源码全过程

Ubuntu 10.04下编译Android源码全过程一、获取Android源代码Git是Linux Torvalds(Linux之父)为了帮助管理Linux内核开发而开发的一个开放源码的分布式版本控制软件,它不同于Subversion、CVS这样的集中式版本控制系统。

在集中式版本控制系统中只有一个仓库(Repository),许多个工作目录(Working Copy),而在Git这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone等),每一个工作目录都包含一个完整仓库,它们支持离线工作,本地提交可以稍后提交到服务器上。

因为Android是由Kernel、Dalvik、Bionic、Prebuilt、build等多个项目组成,如果我们分别使用Git来逐个获取显得很麻烦,所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,使得项目的获取更加简单。

在Ubuntu 8.04上安装Git只需要设定正确的更新源,然后使用apt-get就可以了,apt-get是一条Linux命令,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

apt-get命令一般需要root权限执行,所以一般跟着sudo命令。

sudo apt-get install git-core curl这条命令会从互联网的软件仓库中安装git-core和curl。

其中curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持很多协议,包括FTP、FTPS、HTTP、HTTPS、TELENT等,我们需要安装它从网络上获取Repo脚本文件。

curl /repo >~/bin/repo这句命令会下载repo脚本文件到当前主目录的/bin目录下,并保存在文件repo中。

linux交叉编译环境搭建步骤

linux交叉编译环境搭建步骤

linux交叉编译环境搭建步骤正文:在进行Linux交叉编译之前,我们需要先搭建好相应的交叉编译环境。

下面是搭建步骤的详细说明:步骤一:安装必要的软件包首先,我们需要安装一些必要的软件包,包括GCC、binutils、glibc 以及交叉编译工具链等。

可以通过包管理器来安装这些软件包,比如在Ubuntu上可以使用apt-get命令,CentOS上可以使用yum命令。

步骤二:下载交叉编译工具链接下来,我们需要下载相应的交叉编译工具链。

可以从官方网站上下载已经编译好的工具链,也可以通过源码自行编译得到。

下载好之后,将工具链解压到一个目录下。

步骤三:配置环境变量为了方便使用交叉编译工具链,我们需要将其添加到系统的环境变量中。

可以通过编辑.bashrc文件来实现,添加类似下面的内容:```shellexport CROSS_COMPILE=/path/to/cross-compiler/bin/arm-linux-export ARCH=arm```其中,/path/to/cross-compiler是你下载的交叉编译工具链的路径。

步骤四:测试交叉编译环境在配置好环境变量之后,我们可以通过简单的测试来验证交叉编译环境是否搭建成功。

比如,可以尝试编译一个简单的Hello World程序,并在目标平台上运行。

步骤五:编译其他软件当交叉编译环境搭建成功,并且测试通过之后,我们就可以使用这个环境来编译其他的软件了。

比如,可以使用交叉编译工具链来编译Linux内核、U-Boot引导程序、驱动程序等。

总结:搭建Linux交叉编译环境是进行嵌入式开发的基础工作之一。

在搭建好环境之后,我们可以使用交叉编译工具链来编译适配于目标平台的软件,从而实现在开发主机上进行开发和调试的目的。

Buildroot大大简化了交叉编译工具链的制作

Buildroot大大简化了交叉编译工具链的制作

台上运行的本机编译(Native Compile)工具链。

我花了大量的时间研究buildroot,基于2009.11的版本做了不少修改,使得它符合固件开发的要求。

下面列出的是一些主要的改动:∙增加了对2.6.12内核头文件的支持(编译uClibc需要)∙增加了对uClibc-0.9.28的支持∙增加了对busybox-1.15.3的支持∙增加了对gcc 3.4.4和gcc 4.4.2的支持∙增加了对nfs-utils-1.1.1的支持∙为libiconv瘦身,只保留了unicode和简体中文的支持,编译出的动态库从900多K减小到200多K。

(编译samba需要libiconv)∙让libcurl和openssl只产生静态库。

(编译transmission要用到)1. 准备编译环境(适用于Ubuntu或Debian。

我用的是Ubuntu 9.10)安装编译所需软件包:$ sudo apt-get install build-essential libncurses5-dev bison flex texinfo zlib1g-dev gettext libssl-dev autoconfbuildroot用wget下载软件包源码,因此需要安装wget:$ sudo apt-get install wgetUbuntu默认的shell是dash,它跟buildroot的脚本有些不兼容。

用下面的命令切换到bash:$ sudo dpkg-reconfigure dash2. 下载buildroot-2009.11,放在HOME目录下,当然也可以放在其它目录。

$ cd$ wget /downloads/buildroot-2009.11.tar.bz2$ tar jxf buildroot-2009.11.tar.bz23. 打补丁。

我把我的所有修改都放在一个补丁里:buildroot-2009.11.patch.zip$ cd buildroot-2009.11$ patch -p1 < ../buildroot-2009.11.patch4. 配置buildroot。

ubuntu下建立交叉编译环境

ubuntu下建立交叉编译环境

ubuntu 10.04 建立交叉编译环境arm-linux-gcc-4.3.21. 将arm-linux-gcc-4.3.2.tgz复制到任意路径下;2. 确保安装了标准C开发环境,一句命令搞定:sudo apt-get install build-essential libncurses5-dev;3.在终端进入arm-linux-gcc-4.3.2.tgz存放目录,再sudo tar -zxvf arm-linux-gcc-4.3.2.tgz -C /(注意大写C字母后留一个空格,这样会自动解压缩到/usr/local/4.3.2目录下)修改环境变量,使交叉编译环境生效。

我是执行如下命令:yagerya@yagerya-desktop:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesyagerya@yagerya-desktop:~$ sudo gedit /etc/environment原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr /sbin:/usr/bin:/sbin:/bin: /usr/games“将其改为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin: /sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"保存退出即可.然后注销重新登录就可使环境变量生效了。

我不推荐大家这样做,我试过了在编译内核时无论执行sudo -s后,再执行arm-linux-gcc -v也没有出现环境变量的信息,故cd /opt/FriendlyARM/mini2440后,无论make zImage或sudo make zImage 都出现无法再到arm-linux的情况!所以我推荐大家这样做:yagerya@yagerya-desktop:~$ vim ~/.profile在这个文件最后添加上自己的环境变量:export PATH=$PATH:/usr/local/arm/4.3.2/bin然后在终端执行source ~/.profile ,即可立即生效。

交叉编译环境搭建

交叉编译环境搭建

交叉编译环境搭建一、Emdebian介绍Emdebian visionIn the Emdebian vision someone wishing to build a GNU / Linux based device would:1. Port the linux kernel to their hardware (including writing any specificdevice drivers).2. Select the prebuilt emdebian packages needed to support theirapplication.3. Package their application as Debian package(s) using Debian andEmdebian tools.4. Build a root filesystem using Emdebian tools from the steps above. Emdebian is involved in steps 2,3,4 above (there are far too many embedded device hardware variations to make prebuilt kernels practical).Thus EmDebian is a binary distribution for embedded devices (whereas most of the other contenders in this space are source distributions [of course being Debian and open source the source code is still available if required].What emdebian doesIn short, what EmDebian does is wrap around the regular debian package building tools to provide a more fine grained control over package selection, size, dependencies and content to enable creation of very small and efficient debian packages for use on naturally resource limited embedded targets.二、搭建GCC编译开发环境安装G++/GCC编译环境sudo apt-get install gcc g++ make gdb可以使用man命令查看GCC和G++的帮助信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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版本
如果运行
ls -la /bin/sh
看到链接的是 dash ,则请运行以下命令
sudo dpkg-reconfigure dash
选择 no 以删除 dash
此处如果不改好的话,编译时会出现错误
(在建立交叉编译环境后,可以在运行该命令选择yes重新安装dash)。

4. 解压crosstool-0.43源码包,修改配置文件。

$tar xzvf crosstool-0.43.tar.gz
$cd crosstool-0.43 //下面的操作路径都在此文件夹
$cp demo-arm-softfloat.sh arm-softfloat.sh //复制并建立新文件arm-softfloat.sh $gedit arm-softfloat.sh //用文本编辑器打开,也可用vim打开。

修改文件中的内容:
TARBALLS_DIR=$HOME/downloads //表示下载的源码的存放目录
RESULT_TOP=/opt/crosstools //表示生成的工具链的存放目录
为:
TARBALLS_DIR=/home/usr/downloads(源码存放目录)
RESULT_TOP=/home/usr/crosstools(生成工具链目录)若使用默认位置安装的话会因为权限问题出错。

修改这一句:eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notest //红色为自己所选的GCC和GLIBC的版本号,可以根据自己的实际情况进行修改。

再修改 gcc-3.4.1-glibc-2.3.3.dat文件,过程如下:
$gedit gcc-3.4.1-glibc-2.3.3.dat
修改后内容为:
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.1
GLIBC_DIR=glibc-2.3.3
LINUX_DIR=linux-2.6.8
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.3
注意自己的工具的版本最好和这里是对应的,省的编译器找不到报错或是连网下载浪费时间。

再修改arm.dat
$gedit arm.dat
修改为:
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-softfloat-linux-gnu
TARGET_CFLAGS="-o"
5. 将linux-2.
6.8源码包目录下的/script/kconfig/mconf.c中的91行
static struct menu *current_menu;
改为
struct menu *current_menu;
这样是为了解决"*current_menu"相关的错误。

6. 执行sh arm-softfloat.sh,一个小时左右你就可以看到/home/usr/crosstools目录下有你想要的东西了。

7.修改环境变量
修改环境变量有多种方法我们介绍两种
(1)第一种方法:在当前用户目录的.bashrc中添加如下环境变量的内容
$export
PATH=$PATH:/home/linux/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/b in
(2)第二种方法:或直接修改/home/linux/.bashrc文件
$cd /home/linux
$gedit .bashrc
在第一行添加如下内容:
PATH=$PATH:/home/linux/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/b in
然后执行
$source .bashrc
8.执行如下命令
$ arm-softfloat-linux-gnu-gcc -v
显示
Reading specs from /home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/ gcc/arm-softfloat-linux-gnu/3.4.5/specs
Configured with: /home/david/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-gli bc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu
--prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux -gnu --with-float=soft --with-headers=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat -linux-gnu/arm-softfloat-linux-gnu/include
--with-local-prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-soft float-linux-gnu/arm-softfloat-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.1
ok交叉编译环境创建成功!
9.恢复我们修改的系统配置:
恢复gcc为4.4
$sudo rm /usr/bin/gcc
$sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
重新安装dash
$sudo dpkg-reconfigure dash 选择 yes 以重新安装 dash
到此为止就大功告成了,哈哈。

相关文档
最新文档