交叉编译

建立 arm-linux 交叉编译环境

随声附和 提交于 2019-12-17 09:35:14
我们使用以下版本的文件为例子建立 arm-linux 交叉编译环境: 编译环境 redhat 7.2 或 8.0 binutils-2.14.tar.gz ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz gcc-core-2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2.95....e-2.95.3.tar.gz gcc-g++2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2.95....+-2.95.3.tar.gz glibc-2.2.4.tar.gz ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz glibc-linuxthreads-2.2.4.tar.gz ftp://ftp.gnu.org/gnu/glibc/glibc-l...ds-2.2.4.tar.gz linux-2.4.21.tar.gz ftp://ftp.kernle.org/pub/linux/kern...x-2.4.21.tar.gz patch-2.4.21-rmk1.gz # linux kernel patch for arm ftp://ftp.arm.linux.org.uk/pub/linu...-2.4

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

我与影子孤独终老i 提交于 2019-12-17 00:38:42
安装交叉编译工具arm-linux-gcc-4.3.2 2011-07-08 00:55:28 | 分类: 嵌入式 | 标签: | 字号 大 中 小 订阅 环境:Fedora 9 STEP 1 : 下载arm-linux-gcc-4.3.2.tgz. 把arm-linux-gcc-4.3.2.tgz随便放在一个目录,我放在了/opt 。 下载网站1: http://www.arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz 下载网站2:http://www.arm9.net/download-arm-linux-gcc-4.3.2.asp STEP 2 : 进入到/opt,解压arm-linux-gcc-4.3.2.tgz. 这个包里面有个解压的默认路径,把解压文件放在了./ usr/local/arm/4.3.2 .而我现在把文件放在了/opt里面,那么解压的位置应该是,/opt/usr/local/arm/4.3.2.为了方便,我们解压的时候把./改成根目录。可以man tar 看一下-C选项的意思。解压完毕可以到/usr/local/arm/里面看看是否ok。 cd /opt/ tar xvzf arm - linux - gcc - 4 . 3 . 2 . tgz –C / STEP 3 : 经 过步骤2,arm-linux

交叉编译链版本导致bin文件不同的原因

倖福魔咒の 提交于 2019-12-17 00:08:41
我的ubantu上安装的是4.6.4版本的arm-linux-gcc交叉编译工具。使用韦东山源码的时候,发现编译出的bin文件与源码中bin文件不一样。 我们首先要弄清楚指令集的概念, JZ2440使用arm9核,该CPU核使用的指令集是armv4; 所谓指令集,指的是汇编指令的版本;比如cortex a7等更先进的CPU核它支持某些新的指令,而ARM9不支持这些指令。 你使用比较新的编译器时,它默认支持的指令集一般就不是armv4了; 如果不进行特别指定,编译出来的BIN文件烧在JZ2440上是无法运行的:因为CPU不认得某些新指令,无法执行某些新指令。 一般来说,新的编译器会兼容老的芯片,但是需要告诉编译器,让它使用老的指令集来编译程序。 所以,你当然可以使用4.4的工具链来编译jz2440程序,需要做的是:指定它,使用armv4指令集。 方法如下: 使用3.4.5工具链时,我们这样编译:arm-linux-gcc -c -o led.o led.c // 默认使用armv4 使用4.4等工具链时,这样编译:arm-linux-gcc -march=armv4 -c -o led.o led.c // 默认不是armv4,需要手工指定 问题2: 相信你已经知道答案了, 首先要确定你的CPU核使用哪些指令集, 是否支持软件浮点, 你想使用glibc还是uclibc,

生成自定义NDK交叉编译链(toolchain)

℡╲_俬逩灬. 提交于 2019-12-11 01:16:29
背景:在Mac下编译FFmpeg库时,看了比较多的教程基本都失败,偶然间发现NDK在去GCC化,需要通过交叉编译来完成编译,这里记录下NDK交叉编译链过程 地址 https://developer.android.google.cn/ndk/guides/standalone_toolchain 简单说交叉编译就是在A平台下编译B平台上可以使用的二进制库文件。 环境 操作系统:mac os 10.14.2 ndk版本:android-ndk-r20 编译器:clang 选择工具链(toolchain) android平台目前的架构有armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips,在编译不同平台架构的库时,我们需要指定不同的交叉编译链来完成编译的工作,具体对应关系如下表: ABI toolchain armeabi-v7a armv7a-linux-androideabi arm64-v8a aarch64-linux-android x86 i686-linux-android x86-64 x86_64-linux-android 具体对应工具链的地址是在$NDK_HOME/toolchains目录中 制作工具链(toolchain) NDK提供make-standalone-toolchain.sh

xmake从入门到精通9:交叉编译详解

岁酱吖の 提交于 2019-12-09 07:16:26
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。 除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。 项目源码 官方文档 交叉编译工具链简介 通常,如果我们需要在当前pc环境编译生成其他设备上才能运行的目标文件时候,就需要通过对应的交叉编译工具链来编译生成它们,比如在win/macos上编译linux的程序,或者在linux上编译其他嵌入式设备的目标文件等。 通常的交叉编译工具链都是基于gcc/clang的,大都具有类似如下的结构: /home/toolchains_sdkdir - bin - arm-linux-armeabi-gcc - arm-linux-armeabi-ld - ... - lib - libxxx.a - include - xxx.h 每个工具链都有对应的include/lib目录,用于放置一些系统库和头文件,例如libc, stdc++等,而bin目录下放置的就是编译工具链一系列工具。例如: arm-linux-armeabi-ar arm-linux-armeabi-as arm-linux

交叉编译D-Bus之备忘录

荒凉一梦 提交于 2019-12-06 08:42:32
安装包命令: ./configure CC=arm-unknown-linux-gnu-gcc --prefix=/home/qudc/nfs --host=arm-linux --cache-file=arm-linux.cache 指定交叉编译工具 指定安装路径 指定目标平台 make make install 1. 把"export PATH=$PATH:/home/qudc/gcc-4.0.2-glibc-2.3.5/arm-unknown-linux-gnu/bin (不要加/)" 加入/home/qudc/.bashrc export交叉编译工具链接路径. 2. 用root apt-get install gcc 3. 解压交叉编译工具和linux kernel 使kernel 中make menuconfig 成功. 会遇到头文件报错问题: 安装libc6-dev 和 libncurses5-dev 这两个包. make menuconfig 成功. 4. 安装pkg-config (只能是0.9版, 系统debian4是0.21版, 不然dbus编译不过) 为glib做准备. apt-get install pkg-config 5. 解决安装glib的编译错误 stack pointer 问题: echo ac_cv_type_long_long=yes>arm

dbus-glib-0.108 arm交叉编译

こ雲淡風輕ζ 提交于 2019-12-06 08:18:02
直接上配置: ./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/linux/tools/python-2.7.3/install PKG_CONFIG_PATH=/usr/local/bluez5/lib/pkgconfig CC="arm-cortex_a9-linux-gnueabi-gcc -I/usr/local/bluez5/include/dbus-1.0 -I/usr/local/bluez5/lib/dbus-1.0/include -L/usr/local/bluez5/include -L/usr/local/bluez5/lib -I/usr/local/bluez5/include/glib-2.0 -I/usr/local/bluez5/lib/glib-2.0/include" 路径根据自己的情况读者自行修改。 以为万事大吉,可是就是编译出错,如下所示: /bin/sed: can't read /opt/crosstools/arm-cortex_a9-eabi-4.7-eglibc-2.18/arm-cortex_a9-linux-gnueabi/sysroot/usr/lib/libffi.la: No such file or directory libtool: error: '

交叉编译dbus-python库tips

怎甘沉沦 提交于 2019-12-06 08:09:38
这个python库,需要-ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lglib-2.0这几个链接库。 所以,需要提前跨平台编译好这几个链接库。 ---- ./configure --host=arm-linux-gnueabihf --prefix=/hello/dbus-python-1.2.4/build_arm PYTHON_INCLUDES=-I/usr/remote_arm/include/python2.7 PYTHON_LIBS=-L/usr/remote_arm/lib 其中 --host指定我们运行的平台 --prefix指定我们安装的目录 PYTHON_INCLUDES指定我们跨平台版本的python库 PYTHON_LIBS指定跨平台链接库的地址 ----- make &&make install make的时候,需要加上lpython2.7 lz 这几个链接库。否则在编译一个test文件的时候会报错。 make install 可以将这个东西安装到--prefix指定的目录,我们将该目录拷贝到跨平台的设备中即可使用。 ----- 来源: CSDN 作者: 一遇风云 链接: https://blog.csdn.net/bingxuefenggu/article/details/53023723

交叉编译dbus

百般思念 提交于 2019-12-06 07:16:20
1. 下载dbus和expat源码 dbus: http://dbus.freedesktop.org/releases/dbus/ expat: http://sourceforge.net/projects/expat/ 2. 交叉编译expat #./configure --host=armv6-rpi-linux-gnueabi --prefix=/opt/Rasp/expat #make #make install 3. 交叉编译dbus #./configure --host=armv6-rpi-linux-gnueabi --prefix=/opt/Rasp/dbus CFLAGS=-I/opt/Rasp/expat/include LDFLAGS=-L/opt/Rasp/expat/lib #make #make install 来源: CSDN 作者: 奋斗的IT青年 链接: https://blog.csdn.net/Charein/article/details/36634857

ubuntu 交叉编译 busybox-1.31.1

痴心易碎 提交于 2019-12-06 05:06:35
目的:静态编译 Busybox_arm64-1.13.1 环境:Ubuntu 18.04.3 #----------------环境配置 # aarch64-linux-gnu-g++ sudo apt install -y g++ g++-aarch64-linux-gnu # menuconfig sudo apt install -y libncurses5-dev flex bison #----------------编译过程 #下载源码 wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2 tar -jxvf busybox-1.31.1.tar.bz2 cd busybox-1.31.1 #生成默认编译配置 生成文件大小约2.04MB。 make defconfig #编辑配置 make menuconfig #Settings ---> # --- Build Options # [ ] Build static binary (no shared libs) #按“空格键”勾选此项。 make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- #-j8代表8线程编译 来源: https://www.cnblogs.com/srczhang/p