交叉编译

交叉编译postgresql11.1

匿名 (未验证) 提交于 2019-12-02 23:03:14
(本文在实践过程中,搜索翻阅过网上多篇文章,到底哪篇是原注,也不清楚了。 编译目的,我是为了编译可使用在树莓派上的poco1.9.0) poco编译系列之-postgresql 环境 Ubuntu18.04 desktop 编译工具:arm-linux-gcc-4.5.1 下载源码postgresql-11.1.tar.bz2 解压缩tar xvf postgresql-11.1.tar.bz2 进入目录 修改configure文件,vi configure 在文件靠前的地方加入: USE_OPENSSL_RANDOM=1 注意=左右都没有空格 注释掉这一部分 保存退出 配置 ./configure --host=arm-linux --prefix=/jfc_libs/arm/postgresql --without-readline 完成后修改postgresql-11.1/src# vi Makefile.global 在286行,添加-lssl 否则编译时会报错 编译 Make 安装 Make install 安装成功之后 文章来源: 交叉编译postgresql11.1

poppler交叉编译

匿名 (未验证) 提交于 2019-12-02 22:56:40
Handling PDF )。通过比较觉得poppler比较适合,下面是交叉编译的过程。 硬件环境:iMX6 交叉编译工具链:arm-poky-linux-gnueabi gcc版本为 4.6.2 软件环境:Linux+Qt5.5.1 宿主机系统:Ubuntu18.04 poppler版本:poppler-0.67.0 git clone https://anongit.freedesktop.org/git/poppler/poppler.git 1. 在源码包的CMakeLists.txt中更改配置项 2. 在执行cmake 命令式行是传入配置项 3. 新建一个.cmake文件(入toolchain.cmake),在执行cmake时指定此配置文件 cmake [path] -DCMAKE_TOOLCHAIN_FILE = ./toolchain.cmake 其中path为主CMakeLists的路径。 我采用最简单的编辑CMakeLists这种方法。 设置头文件和库的搜索根路径 set(CMAKE_FIND_ROOT_PATH "/iMX6_ROOT") 设置生成路径 set(CMAKE_INSTALL_PERFIX "/home/username/poppler") 设置编辑器 set(CMAKE_C_COMPILER "arm-poky-linux-gnueabi-gcc"

交叉编译详解

匿名 (未验证) 提交于 2019-12-02 22:56:40
对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么是交叉编译?它有什么作用? 在解释什么是交叉编译之前,先要明白什么是本地编译。 本地编译 本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译: 比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。 交叉编译 交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序: 比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。 之所以要有交叉编译,主要原因是: 交叉编译的困难点在于两个方面: 不同的体系架构拥有不同的机器特性 交叉编译时的主机环境与目标环境不同 Configuration issues: HOSTCC vs TARGETCC: Toolchain Leaks: Libraries: Testing: 详细的对比可以参看这篇文章,已经写的很详细了,在这就不细说了: Introduction to cross-compiling for Linux

Linux:交叉编译sqlite3

匿名 (未验证) 提交于 2019-12-02 21:53:52
版权声明:版权所有!https://blog.csdn.net/weixin_38184741 https://blog.csdn.net/weixin_38184741/article/details/86544853 背景: 交叉编译程序时,报错如下: /opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: cannot find -lsqlite3 collect2: error: ld returned 1 exit status make: *** [client] Error 1 提示没有sqlite3的库。需要我们交叉编译一下。 下载地址: https://sqlite.org/2018/sqlite-autoconf-3260000.tar.gz 编译过程 : tar -vxf sqlite-autoconf-3260000.tar.gz cd sqlite-autoconf-3260000/ mkdir __install ./configure --host=arm-linux --prefix=$PWD/__install CC=aarch64-himix100

Go 和 Android 集成实战

狂风中的少年 提交于 2019-12-02 17:45:47
看到这个标题,你可能会问,为什么要在 Android 中运行 Go,直接使用 Java 不挺好吗? 是的,如果你有现成很强大的 Java 团队,这没有问题,但并不是所有团队都是如此。而且我在这里想强调的是 Android 与 Go 的集合,即在 Android 程序中使用 Go 而不是完全用 Go 来写 Android 程序。 我能想到在 Android 中用 Go 的一些原因: 团队熟悉 Go, 对 Java/Android 了解不多。 已经有现成的 Go 核心代码,比如开源类库: libp2p,turn/stun 类库等。 自己服务的 SDK 其核心逻辑复杂,繁琐,涉及大量网络或并发的操作。 能够在 Android 上使用 Go 代码,得益于 Go 强大的交叉编译能力,那该如何在 Android 上使用我们的 Go 库呢,接下来我将通过一个简单的示例来讲解。 实例教程 本例是在 Android 程序中使用 Go 编译的一个简单动态库来实现对网站测速的简单例子。 思路: Go 交叉编译为 Android 平台支持的 so 文件。 在 Android 中使用 JNA 调用该 so 文件。 依赖: Go NDK r20 JNA 5.4.0 说明: 演示环境为 Mac。 编写 Go 测试代码 编写 speedtester 的核心代码,实现对任意网站访问速度的检测: package

Go 1.5交叉编译

白昼怎懂夜的黑 提交于 2019-12-02 15:18:30
Go 1.5的交叉编译非常简单,基本用法如下: GOOS=os GOARCH=arch go build packages os: darwin , freebsd , linux , windows... arch: 386 , amd64, arm... os和arch的组合可参考: https://golang.org/doc/install/source#environment 交叉编译的过程比较慢,因为go会把所有依赖的包(包括标准库)用指定的架构体系重新编译一遍。 另外,在交叉编译时应当使用 go build,而不是 go install,因为 go install 会把编译出来的 *.a 库文件写入 $GOROOT/pkg 或者 $GOPATH/pkg 目录,这可能并不是你所希望的。 来源: oschina 链接: https://my.oschina.net/u/138837/blog/551529

NTP server 时间同步服务器搭建

落爺英雄遲暮 提交于 2019-12-02 11:46:52
#允许ntp通过防火墙 sudo ufw allow ntp 交叉编译ntp: --target=arm --build=arm ./configure --prefix=$PWD/install --exec-prefix=$PWD/install --host=arm-xilinx-linux-gnueabi CC=arm-xilinx-linux-gnueabi-gcc --with-yielding-select=yes --with-openssl-libdir=/home/linux/openssl-1.0.1f/install/lib --with-openssl-incdir=/home/linux/openssl-1.0.1f/install/include make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- 交叉编译openssl: ./Configure linux-elf-arm -DB_ENDIAN arm:'arm-xilinx-linux-gnueabi-gcc' no-shared --prefix=/home/linux/openssl-1.0.1f/install make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-

交叉编译

≡放荡痞女 提交于 2019-12-02 10:46:48
一、交叉编译环境安装 sudo apt-get install gcc-5-powerpc64le-linux-gnu sudo apt-get install g++-5-powerpc64le-linux-gnu sudo apt-get install g++-5-multilib-powerpc64le-linux-gnu 二、修改 powerpc 交叉编译 cmakelist 重点:1、设置CMAKE_CXX_COMPILER 并指定为一中安装的交叉编译器;本次代码为cpp,所以选者g++ 2、在CMAKE_CXX_FLAGS 中加入-std=c++11 -fpic -O3 -mcpu=power8 -mtune=power8 -DCV_CPU_HAS_SUPPORT_VSX -flto -ffast-math -ftree-vectorize -fpeel-loops -fvect-cost-model -mcmodel=medium -frecord-gcc-switches powerpc 下示例: set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib) set(CMAKE_CXX_COMPILER "/usr/bin

嵌入式开发之移植OpenCv可执行程序到arm平台

耗尽温柔 提交于 2019-12-02 08:08:56
0. 序言 PC操作系统:Ubuntu 16.04 OpenCv版本:4.0 交叉工具链:arm-linux-gnueabihf,gcc version 5.4.0 目标平台:arm 编译时间:20181224 建议新手先看交叉编译的这篇文章: https://www.jianshu.com/p/0fcdce428d8f 1. 下载C++版本Eclipse 下载地址: https://www.eclipse.org/downloads/packages/ 选择Linux 64位 2. 创建C++Project 步骤1:File-New-Project..-C++Project-Next-输入Project name-Next-输入Author-Next: 步骤2:默认Debug和Release: 步骤3:输入交叉编译命令的前缀和交叉编译所在的路径并点击Finish: 说明:这里看不懂的,建议先看交叉编译的文章: https://www.jianshu.com/p/0fcdce428d8f 目录结构: 3. 编写C++代码 把Exam.cpp的代码替换为以下代码并保存: 1 #include<opencv2/core.hpp> 2 #include<opencv2/imgcodecs.hpp> 3 #include<opencv2/imgproc.hpp> 4 using

JNI(Java Native Interface)

情到浓时终转凉″ 提交于 2019-12-02 06:40:42
1.什么是JNI: JNI(Java Native Interface):java本地开发接口 JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++) 外部的c/c++代码也可以调用java代码 2.为什么使用JNI: 效率上 C/C++是本地语言,比java更高效 代码移植,如果之前用C语言开发过模块,可以复用已经存在的c代码 java反编译比C语言容易,一般加密算法都是用C语言编写,不容易被反编译 3.Java基本数据类型与C语言基本数据类型的对应 4.引用类型对应 4.1堆内存和栈内存的概念 栈内存: 系统自动分配和释放,保存全局、静态、局部变量,在站上分配内存叫静态分配, 大小一般是固定的。 堆内存: 程序员手动分配(malloc/new)和释放(free/java不用手动释放,由GC回收),在堆上分配内存叫动态分配, 一般硬件内存有多大堆内存就有多大。 交叉编译 1、交叉编译的概念 交叉编译即在一个平台,编译出另一个平台能够执行的二进制代码 主流平台有: Windows、 Mac os、 Linux 主流处理器: x86、 arm、 mips 2、交叉编译的原理 即在一个平台上,模拟其他平台的特性 编译的流程: 源代码-->编译-->链接-->可执行程序 3、交叉编译的工具链 多个工具的集合,一个工具使用完后接着调用下一个工具 4、常见的交叉编译工具