精华内容
下载资源
问答
  • OSS交叉编译的过程

    2020-04-27 17:45:36
    记录移植OSS过程一些坑交叉编译相关配置库curl库安装(client URL)安装apr库oss_C_SDK 交叉编译相关配置库 本篇移植工作背景是远程升级文件传输方式,现在主要调研了3中方式,分别是OSS、自己搭建FTP服务器...

    交叉编译相关配置库

    本篇移植工作的背景是远程升级的文件传输方式,现在主要调研了3中方式,分别是OSS、自己搭建FTP服务器和MQTT传输。由于传输文件较大,而MQTT一包只能传输64KB的数据,采用这种方式需要进行一些逻辑验证,比如缺包校验,补包的问题。故而调研OSS文件传输的方式。本文的硬件系统是ARM A8内核。

    curl库安装(client URL)

    该库支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP等协议。
    库源码参见阿里云官网下载([https://help.aliyun.com/document_detail/32132.html?spm=a2c4g.11186623.6.1102.168a23d0nqTgeB])。

    ./configure --prefix=/root/curl --host=arm-linux CC=/usr/local/arm_4.4.3/bin/arm-linux-gcc CXX=/usr/local/arm_4.4.3/bin/arm-linux-g++
    

    这里简单介绍下configure后面几个参数的意义,首先–prefix 这个参数的意义是指定路径(安装后保存的路径,比如共享库等)–host 指的是目标机(我这里是arm A8)CC指的编译指令 CXX指的是g++的指令(这个我也不是特别清楚 很少用g++)

    运行完这个命令后,我们就可以:

    1. make
    2. make && install

    安装apr库

    下载地址参考上面 curl的阿里云官网。

    1. 执行configure 命令 配置交叉编译
      ./configure --prefix=/root/apr-1/ --host=arm-linux CC=/usr/local/arm_4.4.3/bin/arm-linux-gcc CXX=/usr/local/arm_4.4.3/bin/arm-linux-g++ ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ap_void_ptr_lt_long=no
    

    前面的配置几乎和curl一样。后面的也是一些配置文件(ps 我也是跟阿里小哥看的)
    这里我出现一个错误:

    ./include/apr_want.h:94:8: error: redefinition of ‘struct iovec’
    

    这个结构体重复定义了,我们把它注释掉即可;

    在这里插入图片描述
    注释或者将#if 0也可以

    2.执行make命令,进行编译,如显示以下错误,则继续执行以下操作。如没有报错,则执行make install命令。

    encoding/apr_escape.c:79:33: error: ‘test_char_table’ undeclared
    tools/gen_test_char > include/private/apr_escape_test_char.h
    /bin/bash: tools/gen_test_char: cannot execute binary file: Exec format error
    

    3.依次执行如下命令,生成当前平台运行的gen_test_char。

    gcc -Wall -O2 -DCROSS_COMPILE tools/gen_test_char.c -s -o gen_test_char
    ./gen_test_char > include/private/apr_escape_test_char.h
    

    我理解这里是在宿主机的编译环境下生成工具链,然后关联。
    4.修改当前目录下的MakeFile,禁止自动生成(交叉编译生成新的)gen_test_char。
    在这里插入图片描述
    ps:图是盗阿里小哥的 自己安装时有些图没截。

    然后

    1. make
    2. make && make install

    ##安装expat库
    1.直接安装apr-util库会出现以下错误。因为缺少XML的解析器,所以需要先安装expat。

    xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory#include <expat.h>
    

    2.安装包直接官网下载(GitHub下载源码包)

    tar xzvf xpat-2.2.5.tar
    cd xpat-2.2.5

    3.执行如下命令,配置expat库

    ./configure --prefix=/root/expat --host=arm-linux CC=/usr/local/arm_4.4.3/bin/arm-linux-gcc CXX=/usr/local/arm_4.4.3/bin/arm-linux-g++
    

    这里路径可以用which arm-linux-gcc 搜索下。
    4.make && make install

    ##安装libmxml库
    执行如下命令,解压libmxml包。
    tar zvxf mxml-0.9.1.tar.gz
    执行如下命令,进入指定目录。
    cd lmxml-0.9.1/
    执行如下命令,创建libmxml目录。
    mkdir /root/lmxml
    执行如下命令,安装mxml。
    ./configure --prefix=/root/mxml --host=arm-linux CC=/usr/local/arm_4.4.3/bin/arm-linux-gcc CXX=/usr/local/arm_4.4.3/bin/arm-linux-g++
    执行make,我们会发现报错;
    ./testmxml: 1: ./testmxml: Syntax error: word unexpected (expecting “)”)
    Makefile:352: recipe for target ‘testmxml’ failed
    make: * [testmxml] Error 2
    参考CSDN的解决办法:“该报错可以忽略,所以我们直接把so和h文件复制走,并建立mxml下面把 include 和lib复制到/root/mxml 供oss_c_sdk使用即可。”验证确实可行。

    这里mxml还有一个需要注意的事项:就是mxml版本不能是最新版本,建议使用2.90或者2.80 我这边最开始使用的是最新版本 会出现xml的报错,具体错误类型没有截图了。
    编译

    oss_C_SDK

    最后就是oss_C_SDK 的安装和交叉编译。
    1.首先解压安装包,这个比较简单不多说了

    tar xvf aliyun-oss-c-sdk-3.5.0.tar.gz
    cd aliyun-oss-c-sdk-3.5.0
    (最新版本是3.9.0

    2.编辑CMakeList.txt文件,在文件开头添加交叉编译器的寻找位置

    SET(CMAKE_SYSTEM_NAME Linux)
    SET(TOOLCHAIN_DIR "/usr/local/arm_4.4.3/")//交叉编译的工具链的位置
    SET(CMAKE_SYSTEM_PROCESSOR MIPS)
    SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gcc)//添加gcc编译路劲
    SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-g++)//添加g++的编译路径
    

    3.添加寻找相关库的路径

    FIND_PROGRAM(APR_CONFIG_BIN NAMES apr-config apr-1-config PATHS /home/aliOSS/osssdk/apr/bin /usr/bin /usr/local/bin /usr/local/apr/bin/)
    FIND_PROGRAM(APU_CONFIG_BIN NAMES apu-config apu-1-config PATHS /home/aliOSS/osssdk/apr-util/bin /usr/bin /usr/local/bin /usr/local/apr/bin/)
    接着向下走 #curl-config时添加
    FIND_PROGRAM(CURL_CONFIG_BIN NAMES curl-config PATH /home/aliOSS/osssdk/apr-utilcurl/bin )
    

    4.删除最后两行关于test 和sample这两个编译。
    5.Cmake

    、、
    cmake . -DCMAKE_INSTALL_PREFIX=/root/oss_c_sdk //你希望库生成后的放置位置
    -DCURL_INCLUDE_DIR=/root/curl/include/ //curl的头文件的路径
    -DCURL_LIBRARY=/root/curl/lib/libcurl.a //curl的库文件静态库(相当于C文件)
    -DAPR_INCLUDE_DIR=/root/apr-1/include/apr-1/ 
    -DAPR_LIBRARY=/root/apr-1/lib/libapr-1.a 
    -DAPR_UTIL_INCLUDE_DIR=/root/apr-util/include/apr-1 
    -DAPR_UTIL_LIBRARY=/root/apr-util/lib/libaprutil-1.a -DMINIXML_INCLUDE_DIR=/root/libmxml/include/ 
    -DMINIXML_LIBRARY=/root/libmxml/lib/libmxml.a 
    
    

    这里根据编译链的路径和安装库路径的位置修改上述命令即可。
    然后就是
    make && make install
    交叉编译部分已经完成了。下一篇介绍使用oss过程中的一些坑。

    展开全文
  • 我是初学linux和Tingy学员,在

            我是初学linux和Tingy 6410的学员,在实现这个交叉编译的过程也遇到不少问题,在此分享一下我编译成功的成果,若有不妥或是不对之处,请多多指出不足之处。

     

    下面我们将来实现交叉编译的过程:

    1.首先我们必须把服务器和客户端(目标板)连接成功,而查看是否连接成功我们要在电脑的linux下ping他们相互地址(假设服务器的地址是192.168.3.120,客户端的地址是192.168.3.121);在服务端下就ping 192.168.3.121,在客户端下就ping 192.168.3.120

     

    2.开始安装NFS服务器,实现服务器和客户端的资源共享

       # apt-get install nfs-common

       #apt-get install nfs-kernel-server

     

    3.进行NFS服务器的配置

       # vim /etc/exports    (注:要在root用户下进行,用# sudo su进入root)

            /home/XXX/nfs 192.168.*.*(rw,no_root_squash,sync) 注:不要在前面加“#”,否则会不成功的)

    下面我们来说明一下rw,no_root_squash,sync这几个参数:

    rw:读写权限

    sync:资料同步写入内存和硬盘

    no_root_squash:nfs客户端共享目录使用者的权限

     

    4.接下来我们就开始启动NFS服务器了

       #  /etc/init.d/portmap  restart

       # /etc/init.d/nfs-kernel-server restart

     

    5.查看显示的共享目录

        #showmount  -e

      

    6.创建服务文件目录,更改权限;创建之后,以后可以不用创建

       # mkdir /home/xxx/nfs

       # chmod 777 /home/xxx/nfs

     

    7.在客户端(开发板)上挂载NFS目录

      首先我们要进入所在的共享目录: # cd /home/XXX/nfs

      在客户端挂载服务器的共享目录: # mount -t nfs -o nolock 192.168.3.120(服务器的地址):/home/XXX/nfs /mnt

     

    8.那么接下来就让我们来看一下是否创建成功吧

       # cd /home/XXX/nfs

       # touch as

       #ls /mnt

    如果我们在/mnt目录下能看到as这个文件,那么我们就成功创建了!!

     

    9.进行编译(这个是在服务器上进行的,要切记哦!!!)

    # cd /home/XXX/nfs

     

    接下来更改PATH环境变量这一步比较重要,之前我是把这一步忘了才造成编译失败的,所以大家要细心点,不要像我这样把这步忘写了哦!!!!

     #export PATH=/opt/FrierndlyARM/toolschain/4.5.1/bin:$PATH

     

    现在我们用vim这个命令来编译一个文件名为hello.c的文件,输出结果为"hello work".

    # arm-linux-gcc hello.c -o hello

     

    10.接下来就是重头戏了,我们将在客户端(开发板)上运行程序

    # cd /mnt

    # ./hello

    运行之后我们将在客户端上看到"hello work"这几个字样显示出来!

    哈哈,第一次实现了交叉编译的心情是不是很高兴 !

     

    我是刚入门的菜鸟,这个是我在学嵌入式过程中,第一个小小的成果,望大神们多多指点,我的一些不足之处,也希望更多的像我这样刚入门的朋友带来一些帮助!

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 1要进行交叉编译,首先要然宿主机与目标板ping成功(即地址在同一个网段上,IP地址前三位是一样,例如宿主  机为192.168.3.111,目标板为192.168.3.112) ifconfig(可查出宿主机与目标把地址) 假如宿...

    咱们的目标是要做到在宿主机编译,在目标板运行~~~~

    思路:

    1要进行交叉编译,首先要然宿主机与目标板ping成功(即地址在同一个网段上,IP地址的前三位是一样的,例如宿主 机为192.168.3.111,目标板为192.168.3.112)

    ifconfig(可查出宿主机与目标把的地址)

    假如宿主机为192.168.2.111    目标板为192.168.3.112(则不在同一个网段上

     在目标板的终端修改其网段

    ifconfig eth0 192.168.2.112

    注意修改完成后,在宿主机ping 目标板的地址,如果有东西不断的跳出来就算ping成功,在目标板也要ping宿主机的地址哦(有的时候网线没插好,所以最好两个都进行ping)!!!!!

    2.安装NFS,建立服务器共享文件

    3.在目标板终端挂载宿主机

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    目标板终端,使用minicom打开:

    sudo apt-get install minicom安装minicom

    sudo minicom -s设置minicom

     修改serial port setup   A将/dev/tty8      改为/dev/ttyUSB0    ;将按F将yes 改为NO

    修改完后退出即可,此终端即为目标板的终端

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    安装NFS

    #apt-get install nfs-common

    #apt-get install nfs-kernel-server


    1.配置NFS

    步骤:(修改配置文件-------开启NFS-----显示共享目录------创建服务文件目录,更改权限)

    在linux工作服务器端配置

    1).修改配置文件

    #vim /etc/exports#说明是要用root用户,或者加sudo,,不要并不是把#打上去。建议用root用户,不然下面的大部分步骤都要用加上sudo太麻烦

    添加

    /home/xxx/nfs 192.168.*.*(rw,no_root_squash,sync) (不要在前面加#!!!)

    内容说明:

    /home/xxx/nfs :分享目录,xxx请用户自行填写(可自行修改,但下面创建目录时要一致)

      *:网段内的所有值

    rw:读写权限

           sync:资料同步写入内存和硬盘

               no_root_squash:nfs客户端共享目录使用者的权限


    2).开启NFS服务(每次进行交叉编译都要使用这两条命令)

     # /etc/init.d/portmap restart

             # /etc/init.d/nfs-kernel-server restart


    3).显示共享出的目录(此步骤可省略)

       #showmount    -e


    4).创建服务文件目录,更改权限(第二次起可不用再创建服务文件目录)

         #mkdir /home/xxx/nfs

         #chmod 777 /home/xxx/nfs


    2.使用NFS

    2.1:在开发板上挂载NFS服务目录

        1.)在宿主机(即你的电脑),把交叉编译后的程序置于共享目录:

    #cd /home/xxx/nfs

    2.)在目标板中,挂载宿主机的nfs共享目录:(注意是在目标板挂载宿主机哦!!!!

    #mount -t nfs -o nolock 192.168.3.x:/home/xxx/nfs  /mnt   


    3).查看是否共享成功

            #cd /home/xxx/nfs

      #touch asdf

      #ls /mnt

             如果在/mnt的目录下可以看到asdf这个文件夹,恭喜你成功了

    3).使用NFS运行程序

    #cd  /mnt

    4.)取消挂载(在目标板终端进行)

    #cd ~

    #umount /mnt

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    交叉编译小小的执行文件

    1.安装编译器

         我用的目标板是arm  tiny6410   用arm-linux-gcc进行编译

    将arm-linux-gcc的解压包解压到 / (要解压到根目录下哦)

     #tar  -zvxf  (文件压缩包,自己打)-C /

    2.进行编译(在宿主机终端进行操作)

          #cd /home/xxx/nfs

    更改PATH环境变量(注意只有更改了PATH的值才能够进行编译哦,这步别忘了哟,很重要滴)

    export PATH=/opt/FrierndlyARM/toolschain/4.5.1/bin:$PATH

    自己用vi编译一个hello world的.c文件,假如取名为haha.c

     #arm-linux-gcc haha.c -o haha

    3.执行文件(注意是在目标板上执行的哟)

           #cd /mnt

     #./haha

     成功则输出haha的文件内容

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    该片文章关于安装NFS的那部分是参考网上大神的文章加上自己的注释写出的。

    各位大神,小编lucky_leaf是一个linux初学者,如果发现有什么错误的地方,请在评论指出,指导指导我这个晚辈。

    这是lucky_leaf的第一篇博客,希望对大家有所帮助微笑


    展开全文
  • 所谓搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需操作系统、应用程序等,然后再上传到目标机上。交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构程序代码...

    所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。

    交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。

    那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

    展开全文
  • Qt5.10.1的交叉编译过程

    千次阅读 2019-07-25 20:28:07
    尽管网上有很多Qt交叉编译的教程,但自己操作的时候还是遇到很多问题,主要是环境配置的问题以及对qt中configure的不熟悉。写下来以防自己忘记。 主机:unbuntu 16.04 qt版本:5.10.1 目标版:全志R11 编译工具链...
  • CMake的交叉编译

    2018-08-28 18:55:30
    CMake的交叉编译问题(Linux x86 - Linux arm11)  如果你的英文比较好,那么可以看这里:...但是我的交叉编译过程不是翻译它的,是根据我自己交叉编译的过程,从了解CMake到完成交叉编译...
  • Bluez协议栈的交叉编译过程,详细地讲解编译过程与步骤,同时指出在编译过程中遇到常见错误,难得指导资料!
  • 针对linphone的交叉编译过程过程中问题解决方法进行指导
  • 利用arm-linux-gcc 4.5.1 交叉编译器编译Qt5.4.2的过程文档
  • 已经用codeblocks 编译后程序,通过 cd program/gcc/h264test7/ ls arm-linux-gcc -o main7 main.c 生成main7 的交叉编译文件 烧到开发板中运行就可以了。
  • 交叉编译过程 首先在Ubuntu上解压下载源码包,里面会出现一堆文件及文件夹,其中重点看这几个:autogen.sh、install、README。以下直接讲编译步骤。 在autogen.sh文件所在文件夹空白处右击,打开命令窗口,交叉...
  • 最近开发东西需要在路由器上使用rabbitmq客户端来连接rabbitmq消息中间件,路由器系统是openwrt交叉编译环境,在这里记录一下整个过程。1.下载rabbitmq源码https://github.com/alanxz/rabbitmq-c2.下载完源码...
  • python交叉编译过程记录

    千次阅读 2016-03-06 13:33:19
    python的交叉编译参数
  • 从NDK r10e提取交叉编译过程 前言 今年公司需求把嵌入式c/c++源码移植到Android系统里面,需要获取交叉编译器,经过一番折腾,终于完成,记录一下。 系统信息:ubuntu 1604 板子信息:RK3288 安卓版本:5.1.1...
  • opencv 交叉编译 opencv安装 下载 OpenCV wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zipunzip 解压unzip 全新 KaTeX数学公式 语法; 增加了支持甘特图mermaid语法1 功能; 增加了 ...
  • Frp交叉编译过程记录

    千次阅读 2018-11-15 13:57:12
    相比gcc,Go语言的交叉编译超乎想象简单,直接安装Go语言编译器,默认安装即可. 设置三个环境变量,各个平台配置方式自行百度 GOARCH=arm GOOS=linux CGO_ENABLED=0 其中GOARCH代表处理器,GOOS代表系统平台.CGO_...
  • CMake交叉编译

    2015-09-08 19:39:26
    如果你的英文比较好,那么可以看这里:...但是我的交叉编译过程不是翻译它的,是根据我自己交叉编译的过程,从了解CMake到完成交叉编译写的,容易入门,不涉及深入研究。  转载请注明原出处: http://hi

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,770
精华内容 1,108
关键字:

交叉编译的过程