精华内容
下载资源
问答
  • Windows平台Makefile文件交叉编译安卓64位库
    2019-06-20 11:00:12

    确保您的应用支持 64 位设备

    https://developer.android.google.cn/distribute/best-practices/develop/64-bit

    环境搭建

    下载使用Cygwin,安装make,gcc等必要组件

    使用VS自带的make

    Makefile教程参考:https://blog.csdn.net/weixin_38391755/article/details/80380786

    如此看来 Android.mk 和 Application.mk 只是自定义格式的Makefile文件,相关教程:https://www.cnblogs.com/SoaringLee/p/10532102.html

    下载并配置NDK,参考:

    https://blog.csdn.net/fengbingchun/article/details/44491763

    https://www.cnblogs.com/exmyth/p/3576731.html

    配置Makefile文件,参考第三方库官网要求

    编译32位和64位版本时设置架构参数为:

    APP_ABI := armeabi-v7a arm64-v8a

    遇到的坑:

    1、出包成功后测试64位包运行状况,出现了读取资源闪退的情况,追踪后发现是 unsigned long类型的坑,即unsigned long int,该类型在32位系统长度为32位,64位系统长度为64位。导致读取文件头长度出错。改为unsigned int,固定为32位就好了。

    2、指针类型转换出错,有些代码将64位的指针的值强制转换成了u32类型,改成转换成size_t即可改成跨平台的类型。

    更多相关内容
  • python和其第三方,在嵌入式linux操作系统上交叉编译的步骤
  • x11、x11所依赖的,以及x11如何编译到Ubuntu上或者交叉编译到arm linux上,文档中有详细的描述
  • rtmpdump里面的librtmp,实测可在Linux下进行交叉编译
  • 填平了无数大坑后终于实现ubuntu20.04+Qt5.12.12+aarch64-linux-gnu交叉编译平台设置。详细记录了安装的全部过程,补充了全部所需的,整个编译过程中无任何错误报出,亲测可用。
  • qt交叉编译静态

    2018-08-30 08:32:38
    各位童鞋,资源里有编译好的海思Hi3531a的qt静态,以及静态编译qt的脚本。如果您想自己编译,可以到官网下载qt5.7.0源码进行编译。我的交叉编译环境是ubuntu14.04 32bit
  • 1. 添加 x86编译链接器 ...继续沿用C# 调用 Rust 文中的项目代码,编译出x86 版本的 输入命令 cargo build --release --target i686-pc-windows-msvc PS:如果执行了rustup target add i...

    1. 添加 x86编译链接器

     rustup target add i686-pc-windows-msvc

    如果没有相应的 x86 编译环境,执行x86的编译命令 ,会有截图找不到crate的错误

    2. 编译x86版本库

    继续沿用 C# 调用 Rust 库 文中的项目代码,编译出x86 版本的库

    输入命令 

    cargo build --release --target i686-pc-windows-msvc

     

     PS:如果执行了 rustup target add i686-pc-windows-msvc,还会报错,则需要手动配置对应链接器路径,参考https://dev-tang.com/post/2020/01/cross-compilation.html

    展开全文
  • linux下编译/交叉编译openssl-1.1.1g生成动态和静态方法: 一、编译linux版本 1. cp openssl-1.1.1g.tar.gz /opt/ 2. tar -zxvf openssl-1.1.1g.tar.gz 3. mkdir build 4. ./config --prefix=/opt/openssl-1.1.1...
  • 2.CMAKE_TOOLCHAIN_FILE 交叉编译文件 #工具链文件 gnu_arm64.cmake set( CMAKE_SYSTEM_NAME Linux ) set( CMAKE_SYSTEM_PROCESSOR arm ) SET(CMAKE_SHARED_LIBRARY_PREFIX "lib") SET(CMAKE_SHARED_LIBRARY_SUFFIX

    1.构建工程时指定工具链

    cmake -DCMAKE_TOOLCHAIN_FILE=/home/…/gnu_arm64.cmake

    2.CMAKE_TOOLCHAIN_FILE 交叉编译文件

    #工具链文件 gnu_arm64.cmake
    set( CMAKE_SYSTEM_NAME Linux )
    set( CMAKE_SYSTEM_PROCESSOR arm )
    
    SET(CMAKE_SHARED_LIBRARY_PREFIX "lib")
    SET(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
    SET(CMAKE_STATIC_LIBRARY_PREFIX "lib")
    SET(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
    
    set( SDK "/home/.../gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu" )#指定路径
    set( SYS_ROOT "${SDK}/aarch64-linux-gnu/libc" )
    set( COMPILER_ROOT "${SDK}/bin" )
    set( COMPILER_PREFIX "aarch64-linux-gnu" )
    
    SET(CMAKE_AR           "${COMPILER_ROOT}/${COMPILER_PREFIX}-ar"      CACHE PATH "ar Program")
    SET(CMAKE_RANLIB       "${COMPILER_ROOT}/${COMPILER_PREFIX}-ranlib"  CACHE PATH "ranlib Program")
    SET(CMAKE_NM           "${COMPILER_ROOT}/${COMPILER_PREFIX}-nm"      CACHE PATH "nm Program")
    SET(CMAKE_OBJCOPY      "${COMPILER_ROOT}/${COMPILER_PREFIX}-objcopy" CACHE PATH "objcopy Program")
    SET(CMAKE_OBJDUMP      "${COMPILER_ROOT}/${COMPILER_PREFIX}-objdump" CACHE PATH "objdump Program")
    SET(CMAKE_LINKER       "${COMPILER_ROOT}/${COMPILER_PREFIX}-ld"      CACHE PATH "Linker Program")
    SET(CMAKE_STRIP        "${COMPILER_ROOT}/${COMPILER_PREFIX}-strip"   CACHE PATH "Strip Program")
    SET(CMAKE_C_COMPILER   "${COMPILER_ROOT}/${COMPILER_PREFIX}-gcc"   CACHE PATH "GCC")
    SET(CMAKE_CXX_COMPILER "${COMPILER_ROOT}/${COMPILER_PREFIX}-g++"   CACHE PATH "G++")
    
    set( CMAKE_FIND_ROOT_ROOT "/home/.../gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu" )#指定路径
    SET( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
    SET( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    SET( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
    
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mtune=cortex-a57.cortex-a53 --sysroot=${SYS_ROOT}" CACHE INTERNAL "" FORCE)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a -mtune=cortex-a57.cortex-a53 --sysroot=${SYS_ROOT}" CACHE INTERNAL "" FORCE)
    
    展开全文
  • 在网络上搜索到的交叉编译指令,大多有错误并且通常难以...本文档综合了许多,详细系统的给出了SDL2及其扩展交叉编译方法。(本文档由于在linux环境下写成,所以打开时,可能会出现汉字乱码,但指令一定不会出错)
  • -host=arm-hisiv100nptl-linux,修改下交叉编译工具,然后修改build.sh里面的交叉编译工具和依赖的源码路径,再调用./build.sh.完成后,查找ngx_auto_config.h,在里面添加一个宏, #ifndef NGX_HAVE_SYSVSHM #...
  • 交叉编译ffmpeg so

    2020-05-22 20:38:49
    下载ffmpeg,本文以ffmpeg-4.2.3为例。 FFmpeg下载 编译工具链 对于C/C++的编译,通常有两个工具 GCC 和 ...编译、交叉编译工具目录 编译工具链目录: android-ndk-r17c/toolchains/llvm/prebuilt/darwin-x86_64/bin

    下载ffmpeg库,本文以ffmpeg-4.2.3为例。

    FFmpeg下载

    编译工具链

    对于C/C++的编译,通常有两个工具 GCC 和 CLANG 。这两个库的区别就不介绍了,感兴趣的同学自行查阅相关资料。
    Google在 ndk 17 以后,把 GCC 移除了,全面推行使用 CLANG 。所以各位同学一定要注意自己的ndk环境。

    NDK 下载

    编译、交叉编译工具目录

    编译工具链目录:
    android-ndk-r17c/toolchains/llvm/prebuilt/darwin-x86_64/bin
    交叉编译环境目录:
    android-ndk-r17c/sysroot
    

    有意思的是ndk 17之后的版本中toolchains/llvm/prebuilt/darwin-x86_64路径下也有sysroot文件夹。

    1)toolchains目录结构toolchains目录
    2)sysroot目录结构sysroot目录
    该目录右侧列出来支持的不同CPU架构及编辑版本,我们选择 CPU 架构 armv7a,Android版本 21为例

    armv7a-linux-androideabi21-clang
    armv7a-linux-androideabi21-clang++
    
    

    使用 GCC 编译FFmpeg

    下载 NDK r17c

    编译脚本

    打开ffmpeg-4.2.3文件夹,创建脚本文件build_gcc_arm.sh,编辑脚本内容

    CPU=armv7-a
    API=21
    ARCH=arm
    
    NDK=/Users/liuhongshuo/AnroidPro/ffmpeg/android-ndk-r17c
    SYSROOT=$NDK/platforms/android-$API/arch-arm
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
    
    ISYSROOT=$NDK/sysroot
    ASM=$ISYSROOT/usr/include/arm-linux-androideabi
    
    # 要保存动态库的目录,这里保存在源码根目录下的android/armv7-a
     PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-marm"
    
    $ADDITIONAL_CONFIGURE_FLAG
    
    function build_android
    {
       echo -e "\033[32m build start \033[0m"
    
       ./configure \
           --target-os=android \
           --prefix=$PREFIX \
           --arch=$ARCH \
           --cpu=$CPU \
           --enable-cross-compile \
           --enable-static \
           --disable-shared \
           --disable-doc \
           --disable-ffmpeg \
           --disable-ffplay \
           --disable-ffprobe \
           --disable-avdevice \
           --disable-doc \
           --disable-symver \
           --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
           --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
           --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
           --sysroot=$SYSROOT \
           --extra-cflags="-I$ASM -isysroot $ISYSROOT -D__ANDROID_API__=$API -U_FILE_OFFSET_BITS -Os -fPIC -DANDROID -Wno-deprecated -mfloat-abi=softfp -marm" \
           --extra-ldflags="$ADDI_LDFLAGS" \
           $ADDITIONAL_CONFIGURE_FLAG
    
       make clean
    
       make -j16
       make install
    
       echo -e "\033[32m build successful \033[0m"
    }
    
    function merge
    {
       echo -e "\033[32m package start \033[0m"
    
       # 打包
       $TOOLCHAIN/bin/arm-linux-androideabi-ld \
           -rpath-link=$SYSROOT/usr/lib \
           -L$SYSROOT/usr/lib \
           -L$PREFIX/lib \
           -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \
           $PREFIX/libffmpeg.so \
           libavcodec/libavcodec.a \
           libavfilter/libavfilter.a \
           libavformat/libavformat.a \
           libavutil/libavutil.a \
           libswresample/libswresample.a \
           libswscale/libswscale.a \
           -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \
           $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a
    
       # strip 精简文件
       $TOOLCHAIN/bin/arm-linux-androideabi-strip  $PREFIX/libffmpeg.so
    
       echo -e "\033[32m package successful \033[0m"
    }
    
    build_android
    merge
    

    编译配置详解答

    设置编译针对的系统
    –target-os=android \

    编译后文件的输出目录
    –prefix=$PREFIX \

    –enable-cross-compile \

    编译动态库,shared和static的开关是相对的。
    –enable-static
    –disable-shared \

    生成文档,以及相关的功能模块
    –disable-doc \

    禁止编译可执行文件
    –disable-programs
    –disable-ffmpeg
    –disable-ffplay
    –disable-ffprobe
    –disable-avdevice
    –disable-doc
    –disable-symver \

    设置交叉编译器,按照实际路径修改就可以了。
    –cross-prefix=KaTeX parse error: Undefined control sequence: \ at position 38: …x-androideabi- \̲ ̲ 设置编译器 --cc=TOOLCHAIN/bin/arm-linux-androideabi-gcc
    –nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \

    设置编译so库的架构,当前设置为arm,可以根据实际需求修改
    –arch=arm \

    设置编译针对的平台,可以根据实际需求进行设置,当前设置为最低支持android-21版本,arm架构。
    –sysroot=KaTeX parse error: Undefined control sequence: \ at position 9: SYSROOT \̲ ̲--extra-cflags=…ASM -isysroot $ISYSROOT -D__ANDROID_API__=21 -U_FILE_OFFSET_BITS -Os -fPIC -DANDROID -Wno-deprecated -mfloat-abi=softfp -marm" \

    –extra-ldflags="$ADDI_LDFLAGS" \

    启动编译

    打开 命令终端,cd 到ffmpeg-4.2.3目录,执行 build_gcc_arm.sh,然后喝杯咖啡等待运行结果。
    在这里插入图片描述

    使用 CLANG 编译FFmpeg

    下载NDK最新版本

    编译脚本

    打开ffmpeg-4.2.3文件夹,创建脚本文件build_clang_arm.sh,编辑脚本内容

    CPU=armv7-a
    API=21
    ARCH=arm
    
    NDK=/Users/liuhongshuo/AnroidPro/ffmpeg/android-ndk-r20
    SYSROOT=$NDK/platforms/android-$API/arch-arm
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
    
    ISYSROOT=$NDK/sysroot
    ASM=$ISYSROOT/usr/include/arm-linux-androideabi
    
    # 要保存动态库的目录,这里保存在源码根目录下的android/armv7-a
     PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-marm"
    
    $ADDITIONAL_CONFIGURE_FLAG
    
    function build_android
    {
       echo -e "\033[32m build start \033[0m"
    
       ./configure \
           --target-os=android \
           --prefix=$PREFIX \
           --arch=$ARCH \
           --cpu=$CPU \
           --enable-cross-compile \
           --enable-static \
           --disable-shared \
           --disable-doc \
           --disable-ffmpeg \
           --disable-ffplay \
           --disable-ffprobe \
           --disable-avdevice \
           --disable-doc \
           --disable-symver \
           --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
           --sysroot=$SYSROOT \
           --extra-cflags="-I$ASM -isysroot $ISYSROOT -D__ANDROID_API__=$API -U_FILE_OFFSET_BITS -Os -fPIC -DANDROID -Wno-deprecated -mfloat-abi=softfp -marm" \
           --extra-ldflags="$ADDI_LDFLAGS" \
           $ADDITIONAL_CONFIGURE_FLAG
    
       make clean
    
       make -j16
       make install
    
       echo -e "\033[32m build successful \033[0m"
    }
    
    function merge
    {
       echo -e "\033[32m package start \033[0m"
    
       # 打包
       $TOOLCHAIN/bin/arm-linux-androideabi-ld \
           -rpath-link=$SYSROOT/usr/lib \
           -L$SYSROOT/usr/lib \
           -L$PREFIX/lib \
           -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \
           $PREFIX/libffmpeg.so \
           libavcodec/libavcodec.a \
           libavfilter/libavfilter.a \
           libavformat/libavformat.a \
           libavutil/libavutil.a \
           libswresample/libswresample.a \
           libswscale/libswscale.a \
           -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \
           $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a
    
       # strip 精简文件
       $TOOLCHAIN/bin/arm-linux-androideabi-strip  $PREFIX/libffmpeg.so
    
       echo -e "\033[32m package successful \033[0m"
    }
    
    build_android
    merge
    

    启动编译

    打开 命令终端,cd 到ffmpeg-4.2.3目录,执行 build_clang_arm.sh。

    参考文章

    【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】

    展开全文
  • 安装OpenWrt交叉编译链,交叉编译MQTT静态
  • ARM64交叉编译OSQP

    2021-08-02 15:16:42
    OSQP交叉编译ARM64 准备工作 下载OSQP 0.4.1:https://github.com/osqp/osqp/releases/tag/v0.4.1,因为需求而选择这个版本,但是不知为何其中的osqp\lin_sys\direct\qdldl\qdldl_sources是缺失的,还要下载最新版...
  • 该工具只依赖于libdrm,资源包含修改后的ffmpeg源码及arm平台上可用的bin文件,内附编译和使用说明。该工具原理是将视频文件转码为视频流数据,并输出到drm显示框架中的 dumb buffer,用于播放视频测试。
  • 装好了64位版本及安装 Linux交叉编译工具链运行GCC,${CROSS_COMPILE}gcc -v依然会提示那经典的“没有那个文件或目录”提示。根据以往的经验,对于64位版本ubuntu我们需要安装“ia32-libs”依赖。遂输入:sudo apt...
  • Linux交叉编译libpcap

    2022-01-22 14:43:10
    编译libpcap在ARM框架处理器下执行的版本,libpcap1.6.2版本 一、arm-linux-gcc安装 1、下载 arm-linux-gcc-4.4.3.tar.gz,直接百度文件名即可 2、任意解压缩至某位置,解压出的文件有如下目录结构: ./opt/...
  • 一、准备工作1、到openssl官网下载最新版本openssl(如openssl-1.1.1d.tar.gz),上传到linux编译机上(如上传到目录/home/test下),并使用tar -xvf openssl-1.1.1d.tar.gz解压:2、将要用到的交叉编译工具链解压后,...
  • 这里写目录标题一、概念二、交叉编译工具链的下载安装下载安装交叉编译链临时有效交叉编译链永久有效三、交叉编译的使用对比gcc与armgccPC端交叉编译发送到树莓派运行、带WiringPi交叉编译如何处理五、其他 ...
  • 另外必须要提的算法包是BLAS(Basic Linear Algebra Subprograms),其实LAPACK底层是使用了BLAS的。不少计算机厂商都提供了针对不同处理器进行了优化的BLAS/LAPACK算法包,例如Intel的MKL(Math Kernel Library,很...
  • onvif编译,交叉编译使用是的openssl版本需与原编译环境系统ssl版本一致
  • 交叉编译是在一个平台上编译另外一个平台可用的应用程序,此时可以想象,另外一个平台上的系统不同,所以我们要指定编译时使用的系统。另外一个平台上运行环境不同,内存的大小端等,所以我们要使用单独编译工具...
  • 典型目标包括3264位x86和ARM。 您可以在不同的物理或虚拟机上进行构建,但这意味着要维护多个系统。 相反,您可以使用GNU编译器集合( GCC )进行交叉编译,从而在一台构建机器上为几种不同的体系结构生成二...
  • 前言:  本文主要写给C...交叉编译工具:android-ndk64-r10-linux-x86_64.tar 交叉编译工具下载地址: 链接:https://pan.baidu.com/s/1VCttTraUoSh82ENVA4t3Og 提取码:sjwo 搭建交叉编译环境: 1、将an...
  • 交叉编译工具链32&64位

    千次阅读 2019-09-26 10:54:09
    问题: 在64位ubuntu上安装32位交叉编译工具链时需要注意事项 1.Enablethei386architecture(asrootuser): sudodpkg--add-architecturei386 sudoapt-getupdate 2.Install32-bitlibraries(asrootuser): s...
  • 交叉编译libmad,编译环境x86 64bit ubuntu,运行平台MTK arm 平台。 下载源代: wget https://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz 解压:tar -zxvflibmad-0.15.1b.tar.gz 编译: cd libmad-...
  • (1)、交叉编译时候直接使用-L和-I参数指定搜索非标准的文件和头文件的路径。例如:arm-linux-gcc test.c -L/usr/local/arm/2.95.3/arm-linux/lib -I/usr/local/arm/2.95.3/arm-linux/include(2)、使用ld.so.conf...
  • 交叉编译ProtoBuf

    2021-06-11 14:54:27
    交叉编译ProtoBuf文件下载地址编译安装protobuf编译安装protobuf-c 文件下载地址 github: protobuf下载地址 github: protobuf-c下载地址 编译安装protobuf 首先解压下载好的压缩包,然后进入该目录下 ...
  • ARM平台下交叉编译的DBUS1.2的代码和,对嵌入式LINUX和基于LINUX的移动平台开发非常有用,里面包含了所有代码和编译后生成的文件和配置信息文件.
  • ARM端交叉编译python3.7及第三方

    千次阅读 2021-05-17 19:56:26
    在PC端交叉编译python 3.7及第三方,并移植到ARM开发板上。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,491
精华内容 10,996
关键字:

交叉编译64位库