• 交叉编译总结 libosscore.a libcurl.a libmysqlclient.a


    把工程文件交叉编译到arm上运行,着实花费了一番功夫。
    首先遇到的错误是 X uses VFP register arguments, B does not
    百度了一下,发现是硬浮点和软浮点的问题,原先是思路是改变X的编码方式,迁就于Y,后来怎么弄都不行,改变思路,用armv7-linux的编译器重新编几个库。
     
    1.libosscore.a
    下载OSS-master.zip
    这个库是用cmake编译的,
    mkdir build  保证cmake出来的文件和原来的文件区分开
    cd build
    export PATH=/home/slk/STM/STLinux-2.4/devkit/armv7/arm-cortex-linux-gnueabi/bin:$PATH  使得cmake文件寻找gcc的时候,找到armv7里的gcc
    cmake ..
    make
     
    编译完成,把libosscore.a拷到工程中,编译,出现relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC错误,是在生成libosscore.a的时候,没有使用-fPIC参数的缘故,于是,修改OSSC-master根目录下的CMakeLists.txt文件
         把
        SET(CMAKE_C_FLAGS "-std=c99 -Wall "
        CACHE
        STRING "Flags used by the compiler during all build types." FORCE)
        改为
        SET(CMAKE_C_FLAGS "-std=c99 -Wall -fPIC"
        CACHE
        STRING "Flags used by the compiler during all build types." FORCE)
    删掉build中的CMakeCache.txt后重新cmake 和make 。
    搞定
     
    2.libcurl.a
    下载curl-7.42.1.tar.gz
    这个库是用configure编译的
    同样export PATH=/home/slk/STM/STLinux-2.4/devkit/armv7/arm-cortex-linux-gnueabi/bin:$PATH,这样也不用给configure传参来设定CC。
    生成后同样有因为没加-fPIC导致的问题,所以修改所有Makefile文件,在CFALGS后面补上-fPIC
    搞定
     
    3.libmysqlclient.a
    下载mysql-connector-c-6.1.6-src.tar.gz
    这个库是用cmake编译的,所以一切步骤同编译libosscore.a,不过可以省去修改CMakeLists.txt一步。
    在make到88%的时候,发生 /bin/sh: ./comp_err,无法执行的二进制文件   错误
    于是,再解压一份mysql-connector-c-6.1.6-src,用linux下的gcc进行编译,编译成功后,将comp_err拷到交叉编译那边的相应文件夹中,继续make,成功。
    搞定。
  • 相关阅读:
    Android SDK Manager 无法下载更新,或者更新速度超慢,或者待安装包列表不显示
    window 下Qt for android 环境搭建
    vim 编辑器的设置
    用户登录案例 展示 三层架构
    简单的SqlHelper
    利用webclient ftpclient上传下载文件
    绑定省市到treeview 递归加载 递归删除
    MD5 文件和字符传加密
    MVC4 EF5.0 实现异步删除和修改 easyui
    MVC中应用ajax的两种方式
  • 原文地址:https://www.cnblogs.com/shenlinken/p/5666725.html
Copyright © 2020-2023  润新知