把工程文件交叉编译到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,成功。
搞定。

交叉编译总结 libosscore.a libcurl.a libmysqlclient.a的更多相关文章

  1. 在Linux下使用MinGW静态交叉编译带有zlib的libcurl(包括交叉编译openssl,即--cross-compile-prefix=i686-w64-mingw32- mingw)

    在Linux下使用MinGW静态交叉编译带有zlib的libcurl libcurl是一个跨平台的.易用的.强大的网络库.在大部分Linux发行版中都有编译好的二进制包可供使用,Mac系统更是将其作为 ...

  2. 海思平台交叉编译curl支持SSL功能

    1.准备工具 1).交叉编译工具 2).下载libcurl和openssl源代码,我使用的是(openssl-1.0.2o.tar,curl-7.59.0.tar) 3).查看cpu详细 ~ # ca ...

  3. Ubuntu16.04 ARM平台移植libcurl curl-7.63.0

    libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, P ...

  4. Libcurl交叉编译

    目录 配置configure 执行make 取得su权限 开始安装 踩坑总结 配置configure ./configure --build=arm --host=mipsel-openwrt-lin ...

  5. libcurl 支持 openssl 交叉编译 mips rt5350

    By admin | 11月18日 0 Comment Advertisement 历经半个月终于把libcurl库编译出来,参考网上很多博客,最终把自己要的库编译出来. 首先说明一下,我要这个库的目 ...

  6. 使用mingw 对libcURL,openSSL,zLib交叉编译

    使用mingw 对libcURL,openSSL,zLib交叉编译   将三个库解压到同一目录下 比如取目录名为 "source" 的目录   提前安装active-perl 配置 ...

  7. libcurl的封装,支持同步异步请求,支持多线程下载,支持https

    最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以 ...

  8. edgex0.7.1_1.0.1的X86编译和交叉编译

    一. X86编译 1. 安装zeromq库 根据setup script安装: wget https://github.com/zeromq/libzmq/releases/download/v4.2 ...

  9. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

随机推荐

  1. C#播放MP3源代码

    代码如下: using System; using System.Runtime.InteropServices; using System.Text; using System.IO ; using ...

  2. jQuery实现手机竖直手风琴效果

    效果:http://hovertree.com/texiao/jquery/65/ 效果图: 手机扫描二维码查看效果: 代码: <!doctype html> <html lang= ...

  3. C# 发送Http请求 - WebClient类

    WebClient位于System.Net命名空间下,通过这个类可以方便的创建Http请求并获取返回内容. 一.用法1 - DownloadData string uri = "http:/ ...

  4. cursor.MySQLCursorDict Class

    5.9.6.4 cursor.MySQLCursorDict Class The MySQLCursorDict class inherits from MySQLCursor. This class ...

  5. 数据结构:单链表结构字符串(python版)

    #!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...

  6. 第 2 章 VBScript基本概念

    学习导航 VBScript 基本知识 变量.常量.数组 算术.逻辑.比较 运算符 2.1 VBScript是什么 VBScript程序语言是Microsoft公司VB(Visual Basic)程序语 ...

  7. ADO.NET 中的新增功能

    ADO.NET 中的新增功能: .NET Framework (current version) 以下是 .NET Framework 4.5 中 ADO.NET 的新增功能. SqlClient D ...

  8. jquery固定在顶部的导航菜单

    体验效果:http://hovertree.com/texiao/jquery/6.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  9. JS高程3.基本概念(5)语句

    1.if语句 2.do-while语句:后测循环语句,循环体内的代码至少执行一次. 3.while语句:前测循环语句. 4.for语句:前测循环语句. 注意:在ECMAScript中不存在块级作用域, ...

  10. 前后端分离之前端项目构建(grunt+require+angular)

    前言 前段时间做了一个项目,前端开发页面,然后把代码给到后端同学,后端同学通过vm再来渲染页面.后来才发现,这种方式简直是太low了,因为前端代码在服务端同学那里,每次前端需要更改的时候都需要去到服务 ...