aarch64交叉编译_qt 编译源码 交叉编译 aarch64 - CSDN
精华内容
参与话题
  • aarch64(ARMv8)交叉编译环境下载

    万次阅读 2017-10-29 14:50:57
    简介在64位ubuntu14.04搭建交叉编译环境,去官网(www.linaro.org)下载解压,设置PATH路径即可 说明gcc-linaro-6.3.1-2017.05-i686_aarch64-linux-gnu.tar.xz和gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-...

    简介

    在64位ubuntu14.04搭建交叉编译环境,去官网(www.linaro.org)下载解压,设置PATH路径即可
    

    这里写图片描述
    这里写图片描述
    https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/
    这里写图片描述

    说明

    gcc-linaro-6.3.1-2017.05-i686_aarch64-linux-gnu.tar.xz和gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz的区别 看下下面的图就知道了

    这里写图片描述

    引用

    https://www.linaro.org/
    http://www.veryarm.com/aarch64-linux-gnu-gcc
    http://blog.csdn.net/x356982611
    http://blog.csdn.net/yandaqijian/article/details/41748599

    展开全文
  • aarch64-linux-gcc交叉编译器(适用裸机程序编译编译Uboot等)ARMV8-64,ARM-A53等,32位ARMV7-32的硬件的不能上传,这里给个链接:链接:链接:https://pan.baidu.com/s/19cypHP3T7mWGkmqNyEoo2A 提取码:yrnt
  • 交叉编译openssl到aarch64

    千次阅读 2019-10-31 15:20:54
    交叉编译openssl到aarch64 openssl下载地址 解压 tar xvzf openssl-1.1.1.tar.gz 交叉编译 # 配置交叉编译器路径 export ARM_V8_CROSS_PATH=/home/wmx/cross_compile/aarch64-linux-gnu/gcc/bin export ...

    交叉编译openssl到aarch64

    openssl下载地址

    解压

    tar xvzf openssl-1.1.1.tar.gz
    

    下载 aarch64 交叉编译工具链

    linaro官网下载 https://www.linaro.org/downloads/
    在这里插入图片描述
    gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
    解压
    tar xvf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz

    配置环境变量:

    终端输入命令 gedit .bashrc 在文件末尾添加
    我这里是

    # 配置交叉编译器路径
    export ARM_V8_CROSS_PATH=/home/wmx/cross_compile/aarch64-linux-gnu/gcc/bin
    export PATH=$PATH:$ARM_V8_CROSS_PATH
    

    交叉编译

    重新打开终端分别输入以下命令:

    # 配置交叉编译器路径
    ./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=aarch64-linux-gnu-
    
    make 
    make install
    
    

    其中报错:

    aarch64-linux-gnu-gcc: error: unrecognized command line option '-m64'
    
    

    解决办法:
    去掉 Makefile 里面所有 -m64 选项,重新编译,成功
    共两处

    	CNF_CFLAGS=-pthread -m64
    	CNF_CXXFLAGS=-std=c++11 -pthread -m64
    

    重新make,成功

    安装在 源码目录的 install 目录下:

    验证

    到 install/bin 目录下
    终端输入命令

    file  openssl 
    

    输出

    openssl: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 3.7.0, BuildID[sha1]=e1f30a9345b6498897598b91aa18d7985f91443c, not stripped
    
    
    展开全文
  • 在Linaro官网下载的交叉编译器。可以适用ARm-A53 64位的交叉编译器
  • arm64aarch64 交叉编译openssh

    千次阅读 2019-03-17 15:03:16
    arm64aarch64 交叉编译ssh依赖库openssl编译部署openssl测试zlib编译部署openssh编译部署遇到的问题 依赖库 ssh由openssh交叉编译 openssh依赖zlib和openssl两个库 分别提供压缩和加密的功能 需要先交叉编译这两个...

    依赖库

    ssh由openssh交叉编译
    openssh依赖zlibopenssl两个库
    分别提供压缩和加密的功能
    需要先交叉编译这两个库

    网上提到的很多编译方法似乎都不适用aarch64,这里重新总结一下

    openssl

    编译

    可以从官方的github下载比较新的release版本
    https://github.com/openssl/openssl/releases
    下载tar.gz压缩包

    <配置自己工具链的环境变量>
    <保证aarch64-linux-gnu- tab键能自动补全就可以,不需要CROSS_COMPILE CC CXX等环境变量>
    tar -xzf openssl-OpenSSL_1_1_1a.tar.gz 
    cd openssl-OpenSSL_1_1_1a/
    ./Configure linux-aarch64 --cross-compile-prefix=aarch64-linux-gnu- --prefix=/home/wjk/install/openssl shared
    make
    make install
    

    这里比较容易出问题的是./Configure,四下寻找才找到正确的配置方法

    • linux-aarch64是指定平台,
    • –cross-compile-prefix是工具链前缀
    • –prefix是执行make install的安装路径
    • shared是指定要生成共享库

    执行make install后会将生成的文件复制到选定路径,主要包括

    • bin里面是几个工具
    • include里面是头文件,我们在PC上交叉编译时将需要指定这个头文件搜索路径
    • lib里面是静态库和共享库
    • share和ssl里面不知道是什么,似乎是文档

    部署

    sudo cp -a 可以保留动态库的软连接
    将lib里面的共享库需要复制到机器里面,并且添加共享库的搜索路径
    我的机器是放到了/usr/openssl/lib里面
    在/etc/profile添加这个库的搜索路径

    export SSL_LDPATH=/usr/openssl/lib/
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SSL_LDPATH
    

    openssl测试

    可以写简单的代码测试ssl是否可以正确工作
    ssltest.cpp

    #include <stdio.h>
    #include <string.h>
    #include <openssl/rand.h>
    
    int main(int argc,char*argv[])
    {
        unsigned char buf[10];
        int num = 10;
        int res;
        res = RAND_bytes(buf,num);
        if(res == 1)
        {
            printf("Succeed to generate rand with openssl\n");
            for(const auto &i:buf)
            {
                printf("%0x\n",i);
            }
        }
        else
            printf("fail to generate,wrong with openssl\n");
        return 0;
    }
    

    makefile如下

    CC = $(CROSS_COMPILE)gcc
    CXX = $(CROSS_COMPILE)g++
    Q = 
    CFLAGS = -g -Wall -std=c++11 
    TARGET = ssltest
    SRC = ssltest.cpp
    
    LIBS := -lssl -lcrypto
    LIBPATH := -L ../../install/openssl/lib/
    INCLUDE := -I ../../install/openssl/include/ 
    
    OBJ := $(subst .cpp,.o,$(SRC))
    OBJ := $(subst .c,.o,$(OBJ))
    
    $(TARGET):$(OBJ)
    	$(Q)$(CC) -o $@ $^ $(LIBS) $(LIBPATH)
    	$(Q)echo compiled over
    
    %.o:%.c
    	$(Q)$(CC) -c $(CFLAGS) $< -o $@
    
    %.o:%.cpp
    	$(Q)$(CXX) -c $(CFLAGS) $< -o $@ $(INCLUDE) 
    
    .PHONY:clean
    clean:
    	rm -f *.o
    	rm -f $(TARGET)
    

    zlib

    zlib是负责压缩的库
    可以从官网下载源码,他们似乎提供交叉编译好的库,but我还是决定自己编译一下
    http://www.zlib.net/
    需要vpn才能上去官网

    编译

    https://github.com/djp952/prebuilt-libz
    这个文章说了各个平台的编译方法,根据自己的需求做了修改

    export CROSS_COMPILE=aarch64-linux-gnu-
    export CC=aarch64-linux-gnu-gcc
    export AR=aarch64-linux-gnu-ar
    export RANLIB=aarch64-linux-gnu-gcc-ranlib
    CFLAGS="-fPIC" ./configure --shared --prefix=/home/wjk/install/zlib
    make
    make install
    

    -fPIC是说生成位置无关码,其他和openssl类似

    部署

    类似sudo cp -a 命令共享库复制到机器端/usr/zlib/lib里面
    修改/etc/profile

    export SSL_LDPATH=/usr/openssl/lib/
    export ZLIB_LDPATH=/usr/zlib/lib/
    export LD_LIBRARY_PATH=$SSL_LDPATH:$ZLIB_LDPATH
    

    openssh

    官网下载
    https://www.openssh.com/portable.html

    这些链接随便选一个就可以,似乎第一个比较常用,在这里找比较新的版本

    编译

    ./configure --host=aarch64-linux-gnu --with-zlib=/home/wjk/install/zlib --with-ssl-dir=/home/wjk/install/openssl --disable-etc-default-login
    make
    

    这里的–host就说明了工具链的前缀,另外还需要指定刚刚编译的zlib和openssl的路径
    注意:openssh不需要make install

    部署

    openssh的部署步骤略复杂
    可以参考这个文章
    https://www.veryarm.com/892.html

    遇到的问题

    在最后一步我遇到了一些问题,
    运行ssh的各种命令都会报错
    No user exists for uid 0
    这个据说是ssh无法读取/etc/passwd这个文件导致

    我的原因是缺少了libnss_file这个库导致的,增加了以后就可以了
    比较奇怪的是我用aarch64-linux-gnu-readelf -d ssh并没有发现它依赖这个库,也没有发现它的子库会依赖这个库

    展开全文
  • aarch64平台交叉编译ltrace工具

    千次阅读 2019-12-28 10:32:06
    aarch64平台, aarch64-himix100-linux-gcc 交叉编译ltrace工具
    /*********************************************************************
    * Author          :     lile
    * Modified        :     2019年12月28日星期六  10:16:13
    * Email           :     roger0212@163.com
    * HomePage        :     lile777.blog.csdn.net
    * CopyRight       :     该文章版权由lile所有。
    *                       保留本版权声明的前提下,可在非商业目的下任意传播和复制。
    *                       对于商业目的下对本文的任何行为需经作者同意。
    *********************************************************************/
    

    1,主机环境

    root@ubuntu:~# lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 14.04.5 LTS
    Release:        14.04
    Codename:       trusty
    root@ubuntu:~# cat /proc/version
    Linux version 4.4.0-31-generic (buildd@lgw01-43) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016
    root@ubuntu:~# file /bin/busybox 
    /bin/busybox: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=ae3cf83d83d4ed554fa7ba6d5f2b17c92c362710, stripped
    root@ubuntu:~# 
    root@ubuntu:~# aarch64-himix100-linux-gcc -v
    Using built-in specs.
    COLLECT_GCC=aarch64-himix100-linux-gcc
    COLLECT_LTO_WRAPPER=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../libexec/gcc/aarch64-linux-gnu/6.3.0/lto-wrapper
    Target: aarch64-linux-gnu
    Configured with: /home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/src/gcc-6.3.0/configure --build=i386-redhat-linux --host=i386-redhat-linux --target=aarch64-linux-gnu --with-arch=armv8-a --prefix=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install --with-specs='%{!ftree-coalesce-vars:-fno-tree-coalesce-vars}' --disable-libmudflap --disable-libssp --enable-gold=yes --disable-libstdcxx-pch --disable-multilib --enable-multiarch --with-gnu-as --with-gnu-ld --enable-libgomp --enable-gnu-indirect-function --enable-checking=yes --enable-lto --enable-c99 --enable-long-long --disable-nls --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --enable-shared --with-pkgversion='HC&C V100R002C00B027_20181107' --enable-languages=c,c++ --with-headers=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target/usr/include --with-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target --with-build-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target --with-gmp=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-mpfr=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-mpc=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-cloog=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-build-time-tools=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/aarch64-linux-gnu/bin --libdir=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/lib
    Thread model: posix
    gcc version 6.3.0 (HC&C V100R002C00B027_20181107) 
    

    2,文件下载

    2.1 ltrace-0.7.91.tar.bz2

    https://github.com/dkogan/ltrace
    https://src.fedoraproject.org/repo/pkgs/ltrace/?C=M;O=D

    2.2 zlib-1.2.11.tar.gz

    http://www.zlib.net/fossils/

    2.3 elfutils-0.178.tar.bz2

    https://sourceware.org/elfutils/ftp/0.178/

    3,环境依赖与准备

    3.1 交叉编译zlib

    time CC=aarch64-himix100-linux-gcc  LD=aarch64-himix100-linux-ld RANLIB=aarch64-himix100-linux-ranlib AR=aarch64-himix100-linux-ar ./configure --prefix=/opt/files/release/zlib/aarch64/
    
    make
    
    make install
    
    root@ubuntu:/opt/files/zlib-1.2.11# tree /opt/files/release/zlib/aarch64/
    /opt/files/release/zlib/aarch64/
    ├── include
    │   ├── zconf.h
    │   └── zlib.h
    ├── lib
    │   ├── libz.a
    │   ├── libz.so -> libz.so.1.2.11
    │   ├── libz.so.1 -> libz.so.1.2.11
    │   ├── libz.so.1.2.11
    │   └── pkgconfig
    │       └── zlib.pc
    └── share
        └── man
            └── man3
                └── zlib.3
    
    6 directories, 8 files
    

    3.2 交叉编译elfutils

    time CC=aarch64-himix100-linux-gcc  LD=aarch64-himix100-linux-ld RANLIB=aarch64-himix100-linux-ranlib AR=aarch64-himix100-linux-ar LDFLAGS='-L/opt/files/release/zlib/aarch64/lib' ./configure --host=aarch64-himix100-linux  --prefix=/opt/files/release/elfutils/aarch64/ --disable-debuginfod 
    
    time make -w CFLAGS+='-I/opt/files/release/zlib/aarch64/include' LDFLAGS="-Wl,-rpath-link,/opt/files/release/zlib/aarch64/lib  -L/opt/files/release/zlib/aarch64/lib"
    
    time make install
    
    root@ubuntu:/opt/files/elfutils-0.178# tree /opt/files/release/elfutils/aarch64/lib/
    /opt/files/release/elfutils/aarch64/lib/
    ├── libasm-0.178.so
    ├── libasm.a
    ├── libasm.so -> libasm.so.1
    ├── libasm.so.1 -> libasm-0.178.so
    ├── libdw-0.178.so
    ├── libdw.a
    ├── libdw.so -> libdw.so.1
    ├── libdw.so.1 -> libdw-0.178.so
    ├── libelf-0.178.so
    ├── libelf.a
    ├── libelf.so -> libelf.so.1
    ├── libelf.so.1 -> libelf-0.178.so
    └── pkgconfig
        ├── libdebuginfod.pc
        ├── libdw.pc
        └── libelf.pc
    
    1 directory, 15 files
    

    3.3 自动生成编译文件

    root@ubuntu:/opt/files/ltrace-0.7.91# bash autogen.sh 
    
    ----------
    autoreconf
    ----------
    
    autoreconf: Entering directory `.'
    autoreconf: configure.ac: not using Gettext
    autoreconf: running: aclocal --force --warnings=all -I config/m4
    autoreconf: configure.ac: tracing
    autoreconf: running: libtoolize --copy --force
    libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config/autoconf'.
    libtoolize: copying file `config/autoconf/ltmain.sh'
    libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `config/m4'.
    libtoolize: copying file `config/m4/libtool.m4'
    libtoolize: copying file `config/m4/ltoptions.m4'
    libtoolize: copying file `config/m4/ltsugar.m4'
    libtoolize: copying file `config/m4/ltversion.m4'
    libtoolize: copying file `config/m4/lt~obsolete.m4'
    autoreconf: running: /usr/bin/autoconf --force --warnings=all
    autoreconf: running: /usr/bin/autoheader --force --warnings=all
    autoreconf: running: automake --add-missing --copy --force-missing --warnings=all
    configure.ac:56: installing 'config/autoconf/compile'
    configure.ac:32: installing 'config/autoconf/config.guess'
    configure.ac:32: installing 'config/autoconf/config.sub'
    configure.ac:59: installing 'config/autoconf/install-sh'
    configure.ac:59: installing 'config/autoconf/missing'
    Makefile.am: installing 'config/autoconf/depcomp'
    testsuite/Makefile.am:29: warning: user variable 'RUNTESTDEFAULTFLAGS' defined here ...
    /usr/share/automake-1.14/am/dejagnu.am: ... overrides Automake variable 'RUNTESTDEFAULTFLAGS' defined here
    autoreconf: Leaving directory `.'
    
    --------
    Finished
    --------
    
    root@ubuntu:/opt/files/ltrace-0.7.91# 
    

    4,x86编译测试

    time ./configure  --prefix=/opt/files/release/ltrace/x86_64
    
    time make CFLAGS+='-Wno-unused-local-typedefs'
    
    time make install
    
    root@ubuntu:/opt/files/ltrace-0.7.3# tree /opt/files/release/ltrace/x86_64
    /opt/files/release/ltrace/x86_64
    ├── bin
    │   └── ltrace
    ├── etc
    │   └── ltrace.conf
    └── share
        ├── doc
        │   └── ltrace
        │       ├── COPYING
        │       ├── CREDITS
        │       ├── INSTALL
        │       ├── README
        │       └── TODO
        └── man
            ├── man1
            │   └── ltrace.1
            └── man5
                └── ltrace.conf.5
    
    8 directories, 9 files
    
    root@ubuntu:/opt/files/ltrace-0.7.3# file /opt/files/release/ltrace/x86_64/bin/ltrace 
    /opt/files/release/ltrace/x86_64/bin/ltrace: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=b46d8b17ed40d165d6e339466237fef6c094f63e, not stripped
    
    
    make uninstall && make distclean
    

    5,aarch64平台交叉编译

    time CC=aarch64-himix100-linux-gcc  LD=aarch64-himix100-linux-ld RANLIB=aarch64-himix100-linux-ranlib AR=aarch64-himix100-linux-ar  ./configure --host=aarch64-himix100-linux  --prefix=/opt/files/release/ltrace/aarch64/ CPPFLAGS='-I/opt/hisi-linux/x86-arm/aarch64-himix100-linux/target/usr/include/ -I/opt/files/release/elfutils/aarch64/include/ -D__LIBELF64=1' LDFLAGS="-Wl,-rpath-link,/opt/files/release/zlib/aarch64/lib  -L/opt/files/release/elfutils/aarch64/lib"
    
    time make CFLAGS+='-Wno-unused-local-typedefs'
    
    time make install
    
    
    root@ubuntu:/opt/files/ltrace-0.7.91# tree /opt/files/release/ltrace/aarch64/
    /opt/files/release/ltrace/aarch64/
    ├── bin
    │   └── ltrace
    └── share
        ├── doc
        │   └── ltrace
        │       ├── COPYING
        │       ├── CREDITS
        │       ├── INSTALL
        │       ├── README
        │       └── TODO
        ├── ltrace
        │   ├── libacl.so.conf
        │   ├── libc.so.conf
        │   ├── libc.so-types.conf
        │   ├── libm.so.conf
        │   ├── libpthread.so.conf
        │   ├── libpthread.so-types.conf
        │   └── syscalls.conf
        └── man
            ├── man1
            │   └── ltrace.1
            └── man5
                └── ltrace.conf.5
    
    8 directories, 15 files
    
    root@ubuntu:/opt/files/ltrace-0.7.91# file  /opt/files/release/ltrace/aarch64/bin/ltrace     
    /opt/files/release/ltrace/aarch64/bin/ltrace: ELF 64-bit LSB  executable, ARM aarch64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.7.0, not stripped
    root@ubuntu:/opt/files/ltrace-0.7.91# 
    
    make uninstall && make distclean
    

    6,踩过的坑

    6.1 系统自带elf库版本不兼容

    checking elf.h usability... no
    checking elf.h presence... yes
    configure: WARNING: elf.h: present but cannot be compiled
    configure: WARNING: elf.h:     check for missing prerequisite headers?
    configure: WARNING: elf.h: see the Autoconf documentation
    configure: WARNING: elf.h:     section "Present But Cannot Be Compiled"
    configure: WARNING: elf.h: proceeding with the compiler's result
    configure: WARNING:     ## --------------------------------------------------- ##
    configure: WARNING:     ## Report this to ltrace-devel@lists.alioth.debian.org ##
    configure: WARNING:     ## --------------------------------------------------- ##
    checking for elf.h... no
    configure: error: *** libelf.h or gelf.h not found on your system
    

    6.2 ltrace-0.7.3版本过时,不支持aarch64系统,编译不通过

    root@ubuntu:/opt/files/ltrace-0.7.3# cat README 
    Supported Targets
    -----------------
    
    The following targets are currently (at least somewhat) supported.
    Some of them may be more or less broken in reality, it is not feasible
    to test each release comprehensively on each target.
    
            i[4567]86-*-linux-gnu
            ia64-*-linux-gnu
            m68k-*-linux-gnu
            mips-*-linux-gnu
            powerpc-*-linux-gnu
            powerpc64-*-linux-gnu
            s390-*-linux-gnu
            s390x-*-linux-gnu
            x86_64-*-linux-gnu
    
    		
    

    6.3 libelf-0.8.13 elf库版本过时,不支持aarch64系统,编译不通过。

    (也可能没找到正确指令,看文档也支持64bit ^_^)
    
    libelf_0.8.13.orig.tar.gz	146.1 KiB	
    https://launchpad.net/ubuntu/+source/libelf/0.8.13-5
    

    7,经验总结

    strace交叉编译2小时就好了,ltrace花了2天时间!!!需要反思的一下:
    (1)编译之前先看看文档,确认支持的版本;
    (2)出错时认真分析日志文件,比如(config.log、实时打印输出的编译指令),一般会找到出错原因;
    (3)交叉编译时思路要清晰,不要把依赖库的版本搞混,用x86_64的库去编译aarch64肯定会有问题;
    (4)网上的参考贴好多都是年代久远,对新出的aarch64支持不友好,需要下载最新版本,对照源码文件文档进行编译;
    (5)开源软件绝大多数都是用相同的发布机制进行管理的,一般是 autoconf + ./configure 生成Makefile;
    (6)需要回炉一下编译、链接的过程,注意 -Wl,-rpath-link,DIR || -Wl,-rpath=DIR || -L DIR|| LD_LIBRARY_PATH=DIR的作用与区别;
    (7)尽可能不要动开源软件的代码,大多数问题可以通过指定配置参数来规避。

    8,Q&A

    libtool: compile:  aarch64-himix100-linux-gcc -DHAVE_CONFIG_H -I. -I../.. -DSYSCONFDIR=\"/opt/files/release/ltrace/aarch64/etc\" -DPKGDATADIR=\"/opt/files/release/ltrace/aarch64/share/ltrace\" -I../../sysdeps/linux-gnu/aarch64 -I../../sysdeps/linux-gnu -I../../sysdeps -I../.. -I/opt/hisi-linux/x86-arm/aarch64-himix100-linux/target/usr/include/ -I/opt/files/release/libelf/aarch64/include/ -L/opt/files/release/libelf/aarch64/lib -D__LIBELF64=1 -Wall -Wsign-compare -Wfloat-equal -Wformat-security -Werror -g -O2 -MT proc.lo -MD -MP -MF .deps/proc.Tpo -c proc.c  -fPIC -DPIC -o .libs/proc.o
    proc.c: In function 'process_tasks':
    proc.c:247:3: error: 'readdir_r' is deprecated [-Werror=deprecated-declarations]
       if (readdir_r(d, &entry, &result) != 0) {
       ^~
    In file included from proc.c:31:0:
    /opt/hisi-linux/x86-arm/aarch64-himix100-linux/target/usr/include/dirent.h:183:12: note: declared here
     extern int readdir_r (DIR *__restrict __dirp,
    
    ------------
    root@ubuntu:/opt/files/ltrace-0.7.91# find . -name "*.c" | xargs grep -rn "readdir_r"
    ./sysdeps/linux-gnu/proc.c:247:         if (readdir_r(d, &entry, &result) != 0) {
    root@ubuntu:/opt/files/ltrace-0.7.91# vi ./sysdeps/linux-gnu/proc.c +247
    
    244         while (1) {
    245                 //struct dirent entry;
    246                 struct dirent *result;
    247                 if ( NULL == (result = readdir(d)) ) { //if (readdir_r(d, &entry, &result) != 0) {
    248                 fail:
    249                         if(tasks) free(tasks);
    250                         closedir(d);
    251                         return -1;
    252                 }
    253                 if (result == NULL)
    254                         break;
     
    

    9,参考

    -L、-rpath和-rpath-link的区别 https://blog.csdn.net/q1302182594/article/details/42102961

    展开全文
  • 我在做QT的移植 用的是aarch64-linux-gnu-gcc编译器,交叉编译已经成功,由于板子上没有太大的空间就把需要的lib放到了/usr/lib下,platforms放到了和可执行文件同一个目录下,可是还是报错This application failed ...
  • aarch64-linux-gnu-gcc 是由 Linaro 公司基于 GCC 推出的的 ARM 交叉编译工具
  • 我是在ubuntu14.04上使用交叉编译工具链编译arm 64位版busybox 第一步:在ubuntu上安装交叉编译链。  下载,解压,配置环境变量(PATH)。。。 第二步:到官网上下载busybox,解压   wget ...
  • 1、使用which命令输出如下root$ which aarch64-linux-gnu-gcc/home/lw/NXP/gcc-6.3-arm64-linux/bin/aarch64-linux-gnu-gcc说明我的交叉编译环境已经安装好了。2、查看/etc/profile存在如下语句...
  • opencv交叉编译环境搭建-aarch64

    千次阅读 2019-02-15 16:08:08
    要将交叉编译应用到64位arm端(rockchip)运行,应用使用到opencv #版本 PC虚拟机: ubuntu16.04 opencv: 3.4.4 交叉编译器: aarch64-linux-gnu 5.4.0 相关依赖: zlib-1.2.11 jpegsrc.v9b libpng-1.6.36 yasm...
  • make的时候出现如下错误: make: aarch64-himix100-linux-gcc: Command not found。 1)查看编译器版本命令“aarch64-...bash: /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc: ...
  • 本文档涉及到的目标硬件为英伟达JetsonTX1(4核Cortex-A53,Armv8.0架构),但是对其他Arm芯片也有一定的借鉴意义,只需要更换交叉编译链即可。 开发环境介绍 主机操作系统:Ubuntu14.04 64位 目标平台:JetsonTX...
  • 1、交叉编译工具 下载/生成android ndk,我使用的是android-ndk-r12b,平台支持从android-9到android-24 二、编译过程 1、指定编译工具链 CC_HOME=/home/waitor/tool/android-ndk-r12b BIN_PATH=$(CC_HOME...
  • Golang交叉编译中的那些坑

    千次阅读 2019-07-04 21:32:08
    最近两个月,一直在搞项目的国产化移植,把golang开发好的程序,运行在国产化平台上,操作系统基本都是基于Linux,但是CPU...Golang交叉编译 交叉编译 在X64上的ubuntu 16.04系统上编译出其他平台的可执行程序 查...
  • 最近,对arm的汇编产生了兴趣,之前对汇编的知识掌握的不深,算是从零学习吧,用blog记录下学习的...不过没有arm的服务器并不代表学不了arm64汇编,我主要是在x86的虚拟机上使用QEMU和cross- toolchain学习aarch64汇...
  • 从linaro下载的aarch64工具链不包含libz库,导致有些static参数的编译程序无法通过,出现类似如下问题: gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../....
  • 因为最近遇到了一个交叉编译器和平台之间的矛盾,所以自己动手做了...目前有一个arm-linu-gcc,但是运行在64位的Ubuntu上面的,而我的PC是32位的,所以自己动手制作一个基于32Ubuntu系统的交叉编译器。 主要参考内容: ...
  • 一、前言:本人使用arm-linux-gcc编译生成32位执行程序后,在TX2上不能运行,同时在TX2上安装ia32-libs各种失败!二、蛋疼ing 下载gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux 解压到你喜欢的目录,这里假设是...
  • 在下载gcc for arm的时候,...区别无外乎几个:大端 or 小端、ARMv7 or ARMv8、32位 or 64位、裸机 or 嵌入式Linux multiarch name syscall ABI instruction set endian­...
1 2 3 4 5 ... 20
收藏数 1,789
精华内容 715
关键字:

aarch64交叉编译