交叉编译

交叉编译openssl不修改Makefile的方法

匆匆过客 提交于 2019-11-28 20:38:59
利用arm-none-linux-gnueabi-gcc交叉编译openssl,生成静态库文件libcrypto.a ,libssl.a 1、从openssl官网下载openssl最新版本,我下载的是openssl-1.0.2e。下载地址: http://www.openssl.org/source/ 2、安装 arm-none-linux-gnueabi-gcc,下载后解压,然后配置一下环境变量就可以。 3、解压openssl源码,进入目录,执行: CC=arm-none-linux-gnueabi-gcc,修改编译器 ./config no-asm -static --prefix=/usr/local/ssl-1.0.2/, 配置,--prefix为安装目录 配置完成后: 手动修改生成的Makefile,并且找到有-m64的地方,全删之(共2处) make & make install 来源: oschina 链接: https://my.oschina.net/u/2348924/blog/493465

Qt 交叉编译经典错误——头文件包含

£可爱£侵袭症+ 提交于 2019-11-28 20:02:36
分析: 这个原因是由于 包含 头文件有误导致的, 我在某个C头文件中包含了C++ 头文件,报错 解决: C 文件包含 C++ 文件 方法如下: #ifdef __cplusplus //bsp_GPIO.h .c 被 cpp文件引用,需要如此添加 extern "C" { #endif //----------本文件需要引出的函数----------// int GPIO_OutEnable(int fd, unsigned int dwEnBits); int GPIO_OutDisable(int fd, unsigned int dwDisBits); int GPIO_OpenDrainEnable(int fd, unsigned int dwODBits); int GPIO_OutSet(int fd, unsigned int dwSetBits); int GPIO_OutClear(int fd, unsigned int dwClearBits); int GPIO_PinState(int fd, unsigned int* pPinState); int GPIO_IrqEnable(int fd, unsigned int dwEnBits); #ifdef __cplusplus } #endif 注:C文件不可以引用C++文件,在现实当中,只能够在C

linux 给运行程序指定动态库路径

风流意气都作罢 提交于 2019-11-28 15:45:16
1. 连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径【deepin可以在里面搜索出qt,因为deepin默认安装了qt程序运行依赖库】,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用: (1). 在 /etc/ld.so.conf 文件中添加库的搜索路径。(或者在/etc/ld.so.conf.d 下新建一个.conf文件,将搜索路径一行一个加入-junziyang) 将自己可能存放库文件的路径都加入到/etc /ld.so.conf中是明智的选择添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如: /usr/X11R6/lib /usr/local/lib /opt/lib 需要注意的是:这种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是 因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so

搭建arm-linux-gcc交叉编译环境

送分小仙女□ 提交于 2019-11-28 12:18:49
1、下载工具并解压 下载路径 http://www.arm9.net/download.asp 将 arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 拷贝到 Linux 中,并解压到根目录: sudo tar -zxvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C / 这样解压到了根目录的 opt/ 下。 2、配置环境变量 vim ~/.bashrc shift+g(即G) 跳到文件末尾添加: export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH export 要不要都可以。 修改完成后保存退出。 令环境变量生效有三种方法: 1)重新打开一个终端 当你重新打开一个终端时,当前路径下的 .bashrc 会被执行一次,从而生效。 2) . ~/.bashrc 3)source ~/.bashrc 3、测试是否安装成功 输入 arm-linux-gcc -v,如果看到 gcc version 4.5.1 说明安装成功。 如果出现错误命令找不到,是因为使用的 Ubuntu 是 64 位的,而我们所安装的交叉编译工具是 32 位的,缺少 32 位的库: sudo apt-get install lsb-core sudo apt-get install

如何交叉编译curl?

落爺英雄遲暮 提交于 2019-11-27 13:18:05
1. 先准备一下openssl库   编译openssl库的方法 在此 2. 获取curl源码   wget https://curl.haxx.se/download/curl-7.65.3.tar.gz 2. 解压   tar xvf curl-7.65.3.tar.gz -C ~/   cd ~/curl-7.65.3 3. 配置   CPPFLAGS="-I/home/jello/openssl/ -I/home/jello/openssl/include" LDFLAGS="-L/home/jello/openssl/lib" LIBS="-ldl" ./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle -

opencv 移植到迅为IMX6开发板

泄露秘密 提交于 2019-11-27 07:56:26
OpenCV 是目前开源项目中最著名的基于机器视觉方向的图像处理的开发包,目前已经有被移植到嵌入式Linux 环境上。本文介绍了OpenCV 交叉编译的基本步骤。 一、编译环境及库文件 linux 环境:ubuntu12.04 交叉编译:4.3.2 arm 板子:IMX6Q 开发板 libz: libjpeg: libpng: libyasm: opencv: libx264: libxvid: lffmpeg: cmake: 二、opencv-2.4.9 的移植过程 1、libz 的交叉编译: # ./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/zlib-install --shared 修改makefile CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib CDSHARED=arm-linux-gcc -shared -wl, -soname,libz.so.1,--version-script,zl lib.map (不一样没关系只改前面编译器) #make #make install 2、libjpeg 的交叉编译: #./configure --host=arm-linux --prefix=/usr/local/arm/4.3

交叉编译环境搭建

…衆ロ難τιáo~ 提交于 2019-11-26 23:39:57
【1】交叉编译(跨平台编译) 定义:将编译好的镜像文件,应用程序,运行在与宿主系统不同平台的开发板上 【2】环境搭建 1)tftp服务器 tftp 是用来下载远程文件的最简单网络协议,它基于udp协议而实现 嵌入式 linux 的 tftp 开发环境包括两个方面: 一是 linux 开发主机端的 tftp-server 支持, 二是嵌入式目标系统的 tftp-client 支持 实现机制:需要网络连接 需要安装 tftp 服务器 功能:可以将编译好的内核下载到开发板 检测:sudo dpkg -s tftpd-hpa 在线下载:sudo apt-get install tftpd-hpa tftp-hpa tftp服务器服务端配置: sudo vi /etc/default/tftpd-hpa TFTP_USERNAME="tftp" tftp服务器的名字 TFTP_DIRECTORY="/tftpboot" tftp服务器传输目录 自行根目录下创建 sudo mkdir tftpboot 修改权限 sudo chmod 777 tftpboot TFTP_ADDRESS="0.0.0.0:69" tftp服务器端口号 TFTP_OPTIONS="-c -s -l" -c create 可上传文件 -s server -l listen 重启tftp服务器: sudo

OpenWRT交叉编译

人盡茶涼 提交于 2019-11-26 23:39:14
对于当前不在OpenWRT repository中的软件,如果是用源码形式发布的,那么可以用OpenWRT Buildroot进行交叉编译。 首先编译好Buildroot(一般编译过一次固件,就已经编译好了) 找到目录staging_dir/toolchain-architecture_gcc-complierver_uClibc-libcver/bin/ 把它加入到环境变量PATH: PATH=$PATH(上面提到的目录) export PATH 把环境变量STAGING_DIR设置为上面提到的toolchain目录: STAGING_DIR=toolchain目录 export STAGING_DIR 设置编译设置中的一些参数,我这里用到的是修改makefile: make CC=architecture-openwrt-linux-uclibc-gcc LD=architecture-openwrt-linux-uclibc-ld 如果缺一些头文件或者库文件,那么需要修改CFLAGS和LDFLAGS,让它们指向staging_dir/target-architecture_uClibc-libcver/usr/include和.../usr/lib目录 编译单独的安装包 首先make menuconfig,在里面选择好需编译的软件包和它依赖的库。 然后make tools

Gin(十三):交叉编译和Docker部署

我是研究僧i 提交于 2019-11-26 17:32:36
陆陆续续已经更新到了第十三期,基本的知识点都已经讲解的差不多,那么最后一步就是对项目进行部署。这里我们将项目部署到 Linux 的服务器 Docker 上。本期知识点包括 交叉编译 和 Docker部署 。 👻交叉编译 什么是交叉编译呢?交叉编辑简单的说就是一个平台生成另一个平台的可执行程序。我们大部分开发环境是 windows 或者 macOS ,当然也有使用 linux 用户(其实在 windows 上更加推荐使用 WSL 进行开发),而我们的上线服务器一般都是 linux,所以我们要进行项目的交叉编译。Go 中对交叉编译相对简单,我们只需要进行简单的设置即可完成交叉编译。 打开我们的项目根目录,打开终端,设置 GOOS 和 GOARCH。 在 windows 下编译为 linux 程序。 SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build - o out / linux / gin_hello . 这里的 go build -o out/linux/gin_hello 是指将编译后的文件输出到 out/linux 下,编译后的二进制叫做 gin_hello 。 我将命令写到了 .bat 方便处理,不用每次都执行贴一下这几行命令。 在项目根目录下新建立 build.bat ,然后执行该文件。当然