当前位置: 首页 > news >正文

百度网站评级网站改进建议有哪些

百度网站评级,网站改进建议有哪些,网上商城推广,购物网站建设包括哪些嵌入式交叉编译工具 ​ 交叉编译工具是为了使在上位机中编译的文件能够在不同平台的目标机中执行#xff0c;搭建交叉编译环境是嵌入式开发的第一步#xff0c;也是关键的一步。不同的体系结构、不同的操作系统#xff0c;甚至是不同版本的内核#xff0c;都会用到不同的交…嵌入式交叉编译工具 ​ 交叉编译工具是为了使在上位机中编译的文件能够在不同平台的目标机中执行搭建交叉编译环境是嵌入式开发的第一步也是关键的一步。不同的体系结构、不同的操作系统甚至是不同版本的内核都会用到不同的交叉编译器。选择交叉编译器非常重要 有些交叉编译器经常会有部分的 BUG都会导致最后的代码无法正常运行。 1. 交叉编译工具安装 交叉编译器完整的安装一般涉及多个软件的安装读者可以从 ftp://gcc.gnu.org/pub/下 载包括 GNU binutils、gcc、glibc、glibc-linuxthreads 等软件以及获得Linux内核头文件、安装Glibc头文件。 binutils 主要用于生成一些 辅助工具如 readelf、objcopy、objdump、as、ld 等gcc 是用来生成交叉编译器的主要 生成 arm-linux-gcc 交叉编译工具应该说生成此工具后已经搭建起交叉编译环境可以 编译 Linux 内核了但由于没有提供标准用户函数库用户程序还无法编译glibc 主要是 提供用户程序所使用的一些基本的函数库glibc-linuxthreads 是线程相关函数库。 最初交叉环境的搭建是需要手动一步步进行搭建的搭建方法复杂很多步骤都涉及对硬件平台的选择一次成功安装的过程需要长达数小时的时间。现在嵌入式平台社区或厂商一般会提供在各种平台上测试通过的交叉编译器或把以上安装步骤全部写入脚本文件或者以发行包的形式提供这样就大大方便了用户的使用。因此 常见的交叉编译工具下载网站有 ARM官方developer.arm.comlinaro社区www.linaro.org 为了大家理解下面分别从手工自己搭建和直接下载安装现成发行包两种方法进行阐述 1.1 自己手工搭建交叉编译工具链 建立存放工具、源码目录和设置相关的环境变量 mkdir /usr/local/arm //建立工作目录 cd /usr/local/arm //进入工作目录 mkdir -p /usr/local/arm/src //建立安装文件的目录 mkdir -p /usr/local/arm/sysroot //建立系统根目录 mkdir -p /usr/local/arm/bin //建立生成工具存放的目录 mkdir -p /usr/local/arm/build //建立编译目录export HOSTi686-pc-linux-gnu //设置 HOST 环境变量 export TARGETarm-linux-gnueabi //设置 TARGET 环境变量 export PREFIX/usr/local/arm //设置 PREFIX 环境变量 export SYSROOT/usr/local/arm/sysroot //设置 SYSROOT 环境变量 export PATH$PATH:${PREFIX}/bin //添加生成工具目录到 PATH 中从网站下载安装的源码包并将获得的源码放到/usr/local/arm/src 目录下需要下载的源码包如下表所示 软件包名称下 载 地 址binutils-2.23.tar.bz2http://ftp.gnu.org/gnu/binutils/linux-2.6.33.3.tar.bz2http://www.kernel.org/pub/linux/kernel/v2.6/gcc-4.6.0.tar.bz2http://ftp.gnu.org/gnu/gcc/gcc-4.6.0/glibc-2.17.tar.gzhttp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.6.tar.gzhttp://ftp.gnu.org/gnu/glibc/ 编译 GNU binutils Binutils 是 GNU 工具之一包括连接器、汇编器和其他用于目标文件和档案的工具它是二进制代码的处理维护工具安装 Binutils 工具包含的程序有 addr2line、 ar、 as、 c filt、gprof、 ld、 nm、 objcopy、 objdump、 ranlib、 readelf、 size、 strings、 strip、 libiberty、 libbfd和 libopcodes。编译步骤 cd ${PREFIX}/src tar xvfj binutils-2.23.tar.bz2 mkdir -p /usr/local/arm/build/binutils-2.23 cd /usr/local/arm/build/binutils-2.23 ../../src/binutils-2.23/configure --prefix${PREFIX} --target${TARGET} --with-sysroot${SYSROOT} 21 | tee configure.out make 21 | tee make.out make install 21 | tee -a make.out–target${TARGET} :这个选项跟–host 一起表示编译生成的可执行文件运行在 HOST 上面但服务的对象是 TARGET也就是说用这些可执行文件连接和汇编出来的程序运行在 TARGET 上面。因为这里默认使用主机的 GCC 编译器因此省略了–host 选项。 –prefix${PREFIX} 告诉配置脚本当运行 make install 时把编译好的东西安装在 PREFIX目录下 –with-sysroot${SYSROOT} :表示SYSROOT 为系统根目录生成的相应库放在 SYSROOT/lib 目录下可执行文件放在SYSROOT/sbin 下配置文件放在 SYSROOT/etc 下用户文件放在 SYSROOT/usr 下。 在上面的编译过程中如果出现问题最好的方法就是删除编译目录下的所有文件删除 Binutils 目录 重新解压 Binutils 再重新开始安装。 安装成功后就会在/usr/local/arm/bin目录下生成下面的工具 arm-linux-addr2line #把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名它就会使用这个可执行文件的调试信息指出给出的地址上是哪个文件及行号。 arm-linux-cfilt #连接器使用它来过滤 C 和 Java 符号防止发生重载函数冲突。 arm-linux-nm #列出目标文件中的符号。 arm-linux-ranlib #产生归档文件索引并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件 arm-linux-strings #打印某个文件的可打印字符串这些字符串最少4个字符长也可以使用选项-n设置字符串的最小长度。默认情况下它只打印目标文件初始化和可加载段中的可打印字符对于其他类型的文件它打印整个文件的可打印字符。这个程序对于了解非文本文件的内容很有帮助。 arm-linux-ar #用来建立、修改和提取归档文件。归档文件是包括了其他多个文件的一个较大的文件从该文件中可以恢复其他文件内容。 arm-linux-gprof #显示程序调用段的各种数据。 arm-linux-objcopy #把一种目标文件中的内容复制到另一种类型的目标文件中 arm-linux-readelf #显示 elf 格式可执行文件的信息 arm-linux-strip #丢弃目标文件中的全部或者特定符号 arm-linux-as #用来编译gcc 输出的汇编文件编译产生的目标文件再由连接器 ld 进行连接操作。 arm-linux-ld #把所有编译产生的目标文件和归档文件结合在一起重新定位数据并连接符号引用。 arm-linux-objdump #显示一个或者更多目标文件的信息。使用选项来控制其显示的信息 arm-linux-size #列出目标文件每一段的大小及总体的大小 arm-linux-libiberty #包含许多 GNU 程序都会用到的函数 这些程序有 getopt、obstack、trerror、strtol 和 strtoul arm-linux-libbfd #二进制文件描述库 arm-linux-libopcode #用来处理 opcodes 的库在生成一些应用程序的时候也会用到它。获得 Linux 内核头文件并将头文件安装在${SYSROOT}/usr/include 目录下 cd ${PREFIX}/src tar xvfj linux-2.6.33.3.tar.bz2 cd linux-2.6.33.3/ make ARCHarm CROSS_COMPILEarm-linux- menuconfig #选择一个对应 CPU 的类型。 make include/linux/version.h mkdir -p ${SYSROOT}/usr/include cp -a ${PREFIX}/src/ linux-2.6.33.3/include/linux ${SYSROOT}/usr/include/linux cp -a ${PREFIX}/src/linux-2.6.33.3/arch/arm/include/asm ${SYSROOT}/usr/include/asm cp -a ${PREFIX}/src/linux-2.6.33.3/include/asm-generic ${SYSROOT}/usr/include/asm-generic第4布主要用来选择一个CPU类型如图所示 安装 Glibc 头文件 Glibc 是 GUN C 库它是编译 Linux 系统程序的重要组成部分。在安装 GNU C 库前需要先安装其头文件。 cd ${PREFIX}/src tar xvfz glibc-2.17.tar.gz cd glibc-2.17 tar xvfz ../glibc-linuxthreads-2.3.6.tar.gz cd .. mkdir -p /usr/local/arm/build/glibc-2.17-headers cd /usr/local/arm/build/glibc-2.17-headers ../../src/glibc-2.17/configure --prefix/usr --host${TARGET} --enable-add-ons --with-headers${SYSROOT}/usr/include 21 | tee configure.out make cross-compilingyes install_root${SYSROOT} install-headers 21 | tee make.out touch ${SYSROOT}/usr/include/gnu/stubs.h touch ${SYSROOT}/usr/include/bits/stdio_lim.h安装 GCC 第一阶段 安装 GCC 共分为两个阶段第一阶段是为了安装 ARM 交叉编译工具没有支持 libc 库的头文件。 cd ${PREFIX}/src tar xvfj gcc-4.6.0.tar.bz2 mkdir -p mkdir /usr/local/arm/build/gcc-4.6.0 cd /usr/local/arm/build/gcc-4.6.0 ../../src/gcc-4.6.0/configure --prefix${PREFIX} --target${TARGET} --enable-languagesc --with-sysroot${SYSROOT} 21 | tee configure.out make 21 | tee make.out make install 21 | tee -a make.out安装 GNU C 库 (安装了 Glibc 后才能对 GCC 进行完全安装 ) cd ${PREFIX}/src mkdir -p /usr/local/arm/build/glibc-2.17 cd /usr/local/arm/build/glibc-2.17 BUILD_CCgcc CC${TARGET}-gcc AR${TARGET}-ar RANLIB${TARGET}-ranlib AS${TARGET}-as LD${TARGET}-ld ../../src/glibc-2.3.5/configure --prefix/usr --buildi386-redhat-linux --hostarm-unknown-linux-gnu --targetarmunknown-linux-gnu --without-__thread --enable-add-onslinuxthreads --with-headers${SYSROOT}/usr/include 21 | tee configure.outmake 21 | tee make.out BUILD_CCgcc CC${TARGET}-gcc AR${TARGET}-ar RANLIB${TARGET}-ranlib AS${TARGET}-as LD${TARGET}-ld ../../src/glibc-2.17/configure --prefix/usr build${HOST} --host${TARGET} –target${TARGET} --without-__thread --enable-add-onslinuxthreads --with-headers${SYSROOT}/usr/include 21 | tee make.out完全安装 GCC cd ${PREFIX}/src mkdir -p /usr/local/arm/build/gcc-4.6.0 cd /usr/local/arm/build/gcc-4.6.0 ../../src/gcc-4.6.0/configure --prefix${PREFIX} --target${TARGET} --enable-languagesc --with-sysroot${SYSROOT} 21 | tee configure.outmake 21 | tee make.out make install 21 | tee -a make.out删除源码目录、临时目录和一些中间目录得到 arm-linux、 bin、 lib、 libexec 和share 目录。 编译交叉编译器是一个很耗时的工作对于实际项目的作用并不大。除非在某些应用程序或者驱动模块已经通过测试进入成品库而这些应用程序或驱动模块依赖某个版本 GCC 或 glibc同时修改和测试应用程序或驱动模块的工作量相对非常复杂此时可以选择需要的版本进行建立交叉编译环境。一般情况下建议直接使用开发板厂商提供的交叉编译器或者在网上下载稳定的交叉编译器。目前针对 2.4 内核的稳定版本为 2.95.3针对 2.6 内核的稳定版本为 3.4.1。本文使用开发商提供的 4.4.3 版本在后面的内核移植和驱动移植过程中使用的就是 4.4.3 版本。 1.2 安装现成交叉编译工具发行包 假设我们从网站已经下载好交叉编译工具链cross-4.3.2.bar.bz2了如何安装使用呢 1解压缩到指定目录 $ mkdir –p /usr/local/arm /* 这是交叉编译器安装目录*/ $ cp cross-4.3.2.bar.bz2 /usr/local/arm $ cd /usr/local/arm $ tar jxvf cross-4.3.2.tar.g $ ls 4.3.2 $ ls 4.3.2/bin arm-none-linux-gnueabi-addr2line arm-none-linux-gnueabi-gfortran arm-none-linux-gnueabi-ar arm-none-linux-gnueabi-gprof arm-none-linux-gnueabi-as arm-none-linux-gnueabi-ld arm-none-linux-gnueabi-c arm-none-linux-gnueabi-ldd arm-none-linux-gnueabi-cc arm-none-linux-gnueabi-nm arm-none-linux-gnueabi-cfilt arm-none-linux-gnueabi-objcopy arm-none-linux-gnueabi-cpp arm-none-linux-gnueabi-objdump arm-none-linux-gnueabi-ct-ng.config arm-none-linux-gnueabi-populate arm-none-linux-gnueabi-g arm-none-linux-gnueabi-ranlib arm-none-linux-gnueabi-gcc arm-none-linux-gnueabi-readelf arm-none-linux-gnueabi-gcc-4.3.2 arm-none-linux-gnueabi-run arm-none-linux-gnueabi-gccbug arm-none-linux-gnueabi-size arm-none-linux-gnueabi-gcov arm-none-linux-gnueabi-sstrip arm-none-linux-gnueabi-gdb arm-none-linux-gnueabi-strings arm-none-linux-gnueabi-gdbtui arm-none-linux-gnueabi-stri2把交叉开发工具链的路径添加到环境变量 PATH 中 $ export PATH$PATH:/usr/local/arm/4.3.2/bin环境变量的配置文件有如下2个随便添加到其中一个文件中即可 profile 类文件用户第一次登录时仅运行一次profile 类文件包括每个用户主目录 下的.profile 文件和/etc/profile 等。用户再次登录时就会运行主目录下的.profile 文件的脚本。bashrc 类文件每当打开 bash shell 时如当打开一个虚拟终端时运行该脚本文 件。bash 类文件包括每个用户主目录下的.bashrc 文件和/etc/bash.bashrc 等 3确认配置交叉编译工具链成功 $ arm-linux-gcc –v /*查看交叉编译器的版本信息*/ arm-none-linux-gnueabi-gcc -v Using built-in specs. Target: arm-none-linux-gnueabi Configured with: /home/linux/crosstooll/toolchain_build/targets/src/gcc-4.3.2/configure --buildi686-build_pc-linux-gnu --hosti686-build_pc-linux-gnu --targetarm-none-linux-gnueabi --prefix/usr/local/arm/4.3.2 --with-sysroot /home/linux/toolchain/arm-none-linux-gnueabi//sys-root --enable-languagesc,c,fortran --disable-multilib --with-archarmv4t --with-cpuarm9tdmi --with-tunearm920t --with-floatsoft --with-pkgversioncrosstool-NG-1.8.1-farsight --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --with-gmp/home/linux/crosstooll/toolchain_build/ targets/arm-none-linux-gnueabi/build/static--with-mpfr/home/linux/crosstooll/toolchain_build/targets/arm-none-linux-gnueabi/build/static--enable-threadsposix--enable-target-optspace--with-local-prefix/home/linux/toolchain/arm-none-linux-gnueabi//sys-root --disable-nls --enable-symversgnu--enable-c99 --enable-long-long Thread model: posix gcc version 4.3.2从上面打印的版本信息中可以看到“–prefix/usr/local/arm/ 4.3.2”这就是交叉编译器 安装的路径。它是在编译前通过 prefix 选项配置的所以这个工具链安装的路径必须是/usr/local/arm/4.3.2。 1.3 交叉编译器测试 在使用新建立的交叉编译器前需要对其进行简单的测试查看其生成的文件是否可以移植到 ARM 平台的开发板上运行。其步骤如下 将 arm-linux-gcc 添加到环境变量中打开/etc/profile文件找到”#Path manipulation“部分添加 arm-linux-gcc 所在目录 修改后保存配置重启系统配置生效 。 # Path manipulation if [ $EUID 0 ]; thenpathmunge /sbinpathmunge /usr/sbinpathmunge /usr/local/sbinpathmunge /usr/local/arm/bin #修改添加的 fi编写简单的测试程序查看程序适应的体系结构。 #include stdio.h int main() {printf(test arm-linux-gcc);return 0; }对上面的程序进行交叉编译 并查看其头文件信息 看其运行属于哪种平台体系结构 arm-linux-gcc –o test test.c #交叉编译 test.c生成 test readelf test –h #使用 readelf 命令查看头文件信息ELF 头Magic 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00Class: ELF32Data: 2 s complement, little endianVersion: 1 (current)OS/ABI: UNIX - System VABI Version: 0Type: EXEC (可执行文件)Machine: ARM #可以看出该文件运行的环境为ARMVersion: 0x1入口点地址 0x8338程序头起点 52 (bytes into file)Start of section headers: 4464 (bytes into file)标志 0x5000002, has entry point, Version5 EABI本头的大小 52 (字节)程序头大小 32 (字节)Number of program headers: 10节头大小 40 (字节)节头数量 30字符串表索引节头 27标志 0x5000002, has entry point, Version5 EABI 本头的大小 52 (字节) 程序头大小 32 (字节) Number of program headers: 10 节头大小 40 (字节) 节头数量 30 字符串表索引节头 27
http://www.zqtcl.cn/news/423773/

相关文章:

  • 海南网站开发公司百度网站建设费用怎么做账
  • 做网站的研究生专业微信公众号推广的方法
  • sql网站开发数据库连接失败wordpress改全屏
  • 做外贸怎么上国外网站网上注册公司流程图文
  • 网站开发 慕课厦门建设局网站技司学校
  • 中山自助建站系统多个网站能否统一做等保
  • 做网站怎么别人搜不出来电商购物网站开发需求分析
  • 教育网站设计用模板做的网站不好优化
  • php网站api接口写法中国做铁塔的公司网站
  • 做博客网站如何盈利wordpress百家号
  • 读经典做临床报名网站cnzz 网站跳出率查询
  • 青岛网站建设网站广东手机网站制作公司
  • 个人免费建站软件影视传媒网站源码
  • 网站软件下载app如何做国外网站
  • 网站建设小细节图片北京装修公司报价
  • 辽宁省住房和城乡建设厅网站换了淮安做网站公司
  • 天津商业网站建设搜狗排名优化工具
  • 阿里服务器可以做多少个网站在家怎么利用电脑赚钱
  • 免费建设一个网站google官方版下载
  • 心馨人生珠海网站建设外贸型企业网站建设
  • 好网站建设公司昆明乐清网站优化推广
  • 哪些网站用天平做logo站长工具app官方下载
  • 做餐厅logo用什么软件网站手机自适应网站源码
  • 股票网站模板辽宁工程建设信息网站
  • 毕业设计某网站开发的开题报告范文广西建设教育网站
  • 浏览小城镇建设的网站商丘网站公司
  • python学习网站做好网络推广的技巧
  • 网站有几种类型小说网站开发源码
  • 给城市建设提议献策的网站网站建设可研报告
  • 常德论坛网站陕西建设官方网站