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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 把工程文件交叉编译到arm上运行,着实花费了一番功夫。 首先遇到的错误是 X uses VFP register arguments, B does not 百度了一下,发现是硬浮点和软浮点的问题,原先是思路是改变X的编码方式,迁就于Y,后来怎么弄都不行,改变思路,用armv7-linux的编译器重新编几个库。
把工程文件交叉编译到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,成功。
搞定。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Java
使用jdk提示Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
使用jdk提示Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
73 0
Makefile.am:1: error: Libtool library used but 'LIBTOOL' is undefined
Makefile.am:1: error: Libtool library used but 'LIBTOOL' is undefined
188 0
解决办法:.No package ‘freetype2‘ found
解决办法:.No package ‘freetype2‘ found
220 0
编译OpenJDK8:configure: could not find or use freetype at location
编译OpenJDK8:configure: could not find or use freetype at location
113 0
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
76 0
|
Android开发
com.android.tools.aapt2.Aapt2Exception: AAPT error: check logs for details
com.android.tools.aapt2.Aapt2Exception: AAPT error: check logs for details
|
Android开发
Android项目打包遇com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
原文:Android项目打包遇com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details 版权声明:著作权归作者所有。
5319 0
|
Java Android开发
打包报错 Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Ex...
骚年,还记得当初为这个上刀山下火海,抓破脑袋都搞定不了的问题吗? 俗话说的好: 有问题找百度,教程都给你了 image.png 但是,这玩意儿是真的,百度出来不好使啊。
9397 0