精华内容
下载资源
问答
  • 如何制作so文件 Unity调用so文件样例 具体如何使用参考博文 https://blog.csdn.net/yhx956058885/article/details/105654224
  • Android 如何编译so文件

    2017-06-01 03:12:53
    如果每次对代码进行修改之后,都重新...但不了解如何编译so文件,请教各位前辈。 是make指定部分的Android.mk来编译,还是利用Android.mk中的LOCAL_C_INCLUDE和LOCAL_SRC_FILES,自己用g++编译呢?又或是其他的方法?
  • Linux下使用Nsight交叉编译so文件

    查了网上一些地方实在不好找关于Linux交叉编译动态链接库的文章


    生成aarch64的so文件


    安装G++编译器

    sudo apt-get install g++-aarch64-linux-gnu

     







    Linux x86_64下的so文件编译




    编译的时候都是选择Local本地编译


    接下来是Linux x86_64CUDA的动态链接库



    编译成功的话,会在目录下生成一个so文件

    展开全文
  • Android studio NDK-JNI 编译so文件

    千次阅读 2016-08-25 13:44:32
    Android studio NDK-JNI 编译so文件上篇我们编写了NDK代码了。也调用到了C/C++的方法,这篇我们来编译成动态库so文件, 在编译生成SO文件需要配下Android.mk文件 为什么需要这个文件Android.mk。当你需要使用JNI的...

    Android studio NDK-JNI 编译so文件

    文章懒的搬了大家直接看我开源中国的博客:http://my.oschina.net/u/1270405/blog

    上篇我们编写了NDK代码了。也调用到了C/C++的方法,这篇我们来编译成动态库so文件,
    在编译生成SO文件需要配下Android.mk文件
    为什么需要这个文件Android.mk。当你需要使用JNI的时候,你需要创建一个native工程。Android.mk就是一个makefile配置文件,帮你把C/C++的代码编译成动态库so的。
    我们来看下Android.mk文件内容

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := hellojni
    LOCAL_SRC_FILES := hajskdh.c
    include $(BUILD_SHARED_LIBRARY)

    解释下这几行代码:

    LOCAL_PATH := $(call my-dir)
    它用于在开发树中查找源文件。 在这个例子中,宏函数‘my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。

    include (CLEARVARS)CLEARVARS(android/build/core/config.mkCLEARVARS:=(BUILD_SYSTEM)/clear_vars.mk),指定让 GNU MAKEFILE为你清除许多 LOCAL_XXX 变量 ( 例如 LOCAL_MODULE , LOCAL_SRC_FILES ,LOCAL_STATIC_LIBRARIES,等等…),除 LOCAL_PATH。这是必要的,因为所有的编译控制文件都在同一个 GNU MAKE 执行环境中,所有的变量都是全局的。

    LOCAL_MODULE := hellojni
    LOCAL_MODULE变量必须定义,以表示你在Android.mk文件中描述的每个模块名称必须是唯一的,通俗的说这个就是你最后生成so的名称,比如你填写的hellojni最后生成的就是libhellojni.so文件。注意:如果把库命名为‘libhellojni’,编译系统将不会添加任何的 lib 前缀,也会生成libhelloworld.so,这是为了支持来源于 Android平台的源代码的 Android.mk 文件。

    LOCAL_SRC_FILES := hajskdh.c
    LOCAL_SRC_FILES变量必须包含将要编译的打包进模块中的C/C++文件源码。这里不需要引用头文件。

    include (BUILDSHAREDLIBRARY)BUILDSHAREDLIBRARYGNUMakefile(build/coresharedlibrary.mk)include(CLEAR_VARS)’以来,定义在 LOCAL_XXX 变量中的所有信息,并且决定编译什么,如何正
    确地去做。并根据其规则生成静态库。同理对于静态库。

    Android.mk是必要文件,那么application.mk就是不是必要文件了。这个文件目的是描述在你的应用程序中所需要的模块(即静态库或动态库)。

    
    APP_MODULES := hellojni
    
    APP_ABI := all

    这两行就相对简单,
    APP_MODULES这个变量是可选的,如果没有定义,NDK将由在Android.mk中声明的默认的模块编译,并且包含所有的子文件(makefile文件)如果APP_MODULES定义了,它不许是一个空格分隔的模块列表,这个模块名字被定义在Android.mk文件中的LOCAL_MODULE中。
    APP_ABI默认情况下,NDK的编译系统”armeabi”ABI生成机器代码。
    all就表示所有类型都生成,
    如果不需要全部只需要部分就可以设置APP_ABI := armeabi armeabi-v7a x86 这样就ok。
    以上介绍是的编译SO需要的两个配置文件。那么接下来就正式编译so文件,找到之前hellojni项目的jni目录,在目录上右键选择ndk-build(在前篇有介绍的,不知道的同学可以过去看下)。点击完成就可以看到控制台输出的结果如下,

    输入图片说明
    这里就会看到项目目录里面多生成了两个目录一个是libs,另一个是obj。libs下面就是编译生成的so对应的机器码,然后obj目录就没有什么用可以删除了。这里需要注意下obj这个目录在第二次编译之前请删除掉。不然二次编译就会收到影响。
    删除的编译生成的文件可以使用ndk-build clear这个命令配置。这个命令就会清楚之前因编译生成的so相关文件,

    我们在介绍另一种编译SO文件的办法,这种办法相对上面一种办法对依赖AS相对较少。
    这里可以使用.sh脚本去执行编译SO文件操作。我们先介绍下.sh模板

    #!/usr/bin/env bash
    
    NDK_PROJECT_PATH=../
    
    function build_so(){
        ANDROID_MK=Android.mk
        APPLICATION_MK=Application.mk
        XXX/xxx/xxx/android-ndk-r12b/ndk-build -j8 NDK_TOOLCHAIN_VERSION=clang NDK_DEBUG=$1
        #-platforms
    }
    #set_env
    DEBUG=1
    RELEASE=0;
    build_so $RELEASE

    以上就是build.sh的模板了。 直接将这段代码复制到文本后缀名改为.sh 然后将xxx/xxx/xxx/Android-ndk/ndk-build更改为你当前ndk的存放目录即可。
    运行的话打开命令行进入到项目目录的jni目录下,然后执行sh build.sh文件即可得到同上面一样效果的文件目录结构。

    以上还需要注意点内容就是:
    通过AS编译出来的so文件配置是可以不需要依赖Aapplication.mk文件的。它对应的配置文件是build.gradle 中这个配置,所以在调整自己需要的so文件的时候注意下,

    //定义使用ndk
            ndk{
                moduleName "hellojni"         //生成的so名字
                abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。
            }

    而通过脚本编译出来以来的文件就是Aapplication.mk所以最后在使用的时候记得分清楚。以免搞混乱了。

    展开全文
  • 【MAC】Ncnn 编译so文件方案 1、下载ncnn github地址是:https://github.com/Tencent/ncnn 指定目录:在终端或者git管理工具 输入: git clone https://github.com/Tencent/ncnn.git 2、编译Ncnn 2.1 Mac平台 安装...

    【MAC】Ncnn 编译so文件方案

    1、下载ncnn github地址是:https://github.com/Tencent/ncnn

    指定目录:在终端或者git管理工具 输入:
        git clone https://github.com/Tencent/ncnn.git

    2、编译Ncnn

    2.1 Mac平台 安装cmake、wget(根据实际编译需要)

        注:cmake终端安装方式:brew search cmake
                        brew install cmake
            wget安装方式如上过程。

    2.2 进入 ncnn(cd ncnn)然后执行sudo ./build.sh

        注:在mac下会出异常(其他平台win或Linux未亲测)也许有些环境可以直接运行,目前使用的是oh-my-zsh 终端环境
        接着修改build.sh执行文件
        把文件头 #!/usr/bin/bash,修改为 #!/usr/bin/env bash
    
        然后再执行sudo ./build.sh
        如果出现 提示 export ANDROID_NDK=~/your/ndk/path
        配置自己的ndk路径。安装android studio的朋友可以直接打开AS然后在里面找到ndk路径

    如果没有其他异常提示则运行成功 如下图:
    【MAC】Ncnn 编译so文件方案
    有build-android-armv7文件夹,里面包含了install/lib和include(稍后需要用到)

    2.3 编译so的的命令ndk-build

    jni路径见下图
    【MAC】Ncnn 编译so文件方案
    进入jni路径下
    然后在终端输入:sudo ndk-build
    正常情况下会有如下提示:

        Android NDK: android-9 is unsupported. Using minimum supported version android-14.    
        Android NDK: WARNING: APP_PLATFORM android-14 is higher than android:minSdkVersion 1 in /Users/lichong/Documents/android/github/ncnn/examples/squeezencnn/AndroidManifest.xml. NDK binaries will *not* be comptible with devices older than android-14. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.    
        Android NDK: ERROR:/Users/lichong/Documents/android/github/ncnn/examples/squeezencnn/jni/Android.mk:ncnn: LOCAL_SRC_FILES points to a missing file    
        Android NDK: Check that /home/nihui/dev/qqfacecnn/ncnn/build-android-armv7/install/lib/libncnn.a exists  or that its path is correct   
        /Users/lichong/Library/Android/sdk/ndk-bundle/build/core/prebuilt-library.mk:45: *** Android NDK: Aborting    .  Stop.
    
    重要的是“LOCAL_SRC_FILES points to a missing file”
    根据提示路径可以找到Android.mk文件:其中有“LOCAL_SRC_FILES := $(NCNN_INSTALL_PATH)/lib/libncnn.a”
    再追述“NCNN_INSTALL_PATH=/home/nihui/dev/qqfacecnn/ncnn/build-android-armv7/install”
    这个路径看上去很眼熟。哈哈哈!因为这个就是工程的绝对路径。修改ncnn前面的路径“/home/nihui/dev/qqfacecnn/”为~</your/path>即可
    
    再次运行ndk-build
    会有如下提示:
        Android NDK: android-9 is unsupported. Using minimum supported version android-14.    
    Android NDK: WARNING: APP_PLATFORM android-14 is higher than android:minSdkVersion 1 in /Users/lichong/Documents/android/github/ncnn/examples/squeezencnn/AndroidManifest.xml. NDK binaries will *not* be comptible with devices older than android-14. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.    
    [armeabi-v7a] Compile++ thumb: squeezencnn <= squeezencnn_jni.cpp
    [armeabi-v7a] SharedLibrary  : libsqueezencnn.so
    [armeabi-v7a] Install        : libsqueezencnn.so => libs/armeabi-v7a/libsqueezencnn.so

    如出现以上提示。
    恭喜你成功编译出so文件!!!

    3、后记

    快过了一年了。最近有反馈在ndk: r19c无法编译出so
    现象如下:
    【MAC】Ncnn 编译so文件方案

    也许有童鞋看上去眼熟。这是因为NDK高版本对源码规范比较高导致的。

    建议参考:
    【亲测】【Android Studio】升级3.1.2异常记录

    可下载里面ndk-v16进行编译试试!
    【MAC】Ncnn 编译so文件方案

    以上问题由下面的童鞋反馈

    感谢@超级土豆EX

    联系我

    QQ群号: 94297366
    Email: lichongmac@163.com

    转载于:https://blog.51cto.com/4789781/2117481

    展开全文
  • 今天研究一个问题,想创建一个cocos2d-lua文件跑真机看看,因为涉及到修改引擎的代码,所以创建的源代码工程,然后我在编译so文件的时候报错了,arm-linux-androideabi-g++: error: CreateProcess: No such file or ...

    今天研究一个问题,想创建一个cocos2d-lua文件跑真机看看,因为涉及到修改引擎的代码,所以创建的源代码工程,然后我在编译so文件的时候报错了,arm-linux-androideabi-g++: error: CreateProcess: No such file or directory 错误如下:

    然后我在这里记录一下,解决方法:

    原因是.MK文件中包含的文件太多了,也就是cpp文件过多导致,而windows对于函数参数个数有限制,解决的方法:
    在Android.mk文件中添加:LOCAL_SHORT_COMMANDS := true
    在Application.mk文件中添加:APP_SHORT_COMMANDS := true

    这样就好了。

     

    今天编译安卓的时候遇到这个问题:

    No such file or directory  #include <curl/curl.h>

    解决方法:

    在android.mk文件中添加一局:

    $(call import-module,curl/prebuilt/android)

    如图:

    就可以了。

    展开全文
  • Android 编译so文件 MP4V2

    万次阅读 2018-05-14 11:27:15
    Linux系统下编译mp4v2生成Android下使用的So文件 一、需求背景 之前一直用到了mp4v2这个库,使用库进行MP4的文件录制,一直使用 的是armeabi类型的so文件,后来由于AS的更新,将不再支持armeabi格式的so文件,...
  • Linux下C文件编译so文件

    千次阅读 2019-07-28 17:18:39
    首先,检查GCC是否安装 gcc -v 能打印出gcc版本信息,就能直接编译了。 编译: gcc -o libtest.so -shared -fPIC test.c from:https://blog.csdn.net/u012424449/article/details/54617352 ...
  • MuPdf编译so文件

    千次阅读 热门讨论 2015-02-28 15:56:45
    最近研究Android的PDF,因为Mupdf下载的源码并不是能直接运行,需要...自己测试编译Mupdf1.6的so文件并成功运行。 1.首先下载好MuPdf源文件。 2.下载安装Cygwin。(参考:http://blog.csdn.net/jianping_shen/article/de
  • Linux g++编译 so文件出错:file not recognized: File trunccated
  • 编译SO文件到C源码

    千次阅读 2020-02-17 08:50:26
    用IDA pro 反编译出来的并不是正式的原代码 ...1、下载IDA Pro,我用的是6.8的版本,解压后,有idaq.exe、idaq64.exe两个可执行文件,分别用于反编译32位、64位的so的so文件。 IDA工具 2、打开IDA,将需...
  • 1、新建接口文件 2、生成头文件 cmd下切换到项目下的bin/classes目录,执行javah ***....3、编译cpp文件,生成so文件 cmd下切换到项目主目录,执行ndk-build命令(必须保证ndk安装目录已经添加到系统变量path中)
  • Mupdf编译so文件详细步骤

    千次阅读 2018-10-23 15:46:44
    最近研究Android的PDF,因为Mupdf下载的源码并不是能直接运行,需要自己编译,所以把自己编译的过程总结一下。 1、下载mupdf mupdf-1.6下载 官网下载地址 2、下载安装Cygwin 参考详细安装步骤 3、解压mupdf...
  • IDA反编译so文件导入Jni

    千次阅读 2018-01-12 18:59:29
    前言 今天看了这个wp,可能让我收获最多的就是知道了IDA可以通过加载jni.h文件,使so反汇编之后...首先将so文件拖入IDA,已默认方式加载,IDA会自动进行识别 可以看到反汇编之后,很多Jni的结构体没有识别出来。 ...
  • 版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述  安卓应用程序的开发语言是java,但是由于java层...而so文件是一个二进制文件,我们是无法直接分析so文件的,所以这里需要用到一个反编译工具IDA Pro...
  • NDK学习2,编译so文件

    2015-08-10 18:10:45
    工具:CygWin  1. 把android.mk配置完成后  2.启用CygWin,调转到项目的目录下面,  有个小问题,怎么进入C:盘符下面,顺序如下 cd / ... 使用$NDK/ndk-build ,命令来编译so库,刷新下目录就可以看见 多了个obj目录
  • windows 下 ffmpeg2.6.1 编译so文件

    千次阅读 2015-03-27 13:03:21
    最近因为项目中要做录音转码...所以 编译起来很是费时,不过好在经常一个星期的努力,把这些都搞定了,从不会编译和写C现在基本上能看懂和写了,今天把编译这一块写一些,为大家做过贡献,也记录一下。  一、首先下载
  • debug文件夹下的.so文件太大,我们需要对.so文件大小做出优化: set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
  • 官方文档:... ... 2、项目会默认生成jni事例代码,观察项目结构,在app/src/main下有个cpp文件夹,我们要写或者要添加的c/c++文件就写在该文件夹下。 3、打开MainActivity.java...
  • 1. 引用外部so文件 已验证过的引用外部so文件主要有三种方式: 1.1 main目录下创建jniLibs目录,so文件按平台存放于子目录下(最简单方式) 只需在app/src/main目录下创建jniLibs目录,然后将so文件按平台...
  • coco2dx编译so文件出错解决方法

    千次阅读 2014-09-26 11:49:36
    今天在使用cocos2dx项目中proj.andriod目录下的build_native.py打包so文件时报错: ;">The Selected NDK toolchain version was 4.8 ! Android NDK: WARNING:jni/../../cocos2d/cocos/./Android.mk:cocos2dx_...

空空如也

空空如也

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

编译so文件