首先了解一下静态: 1. 静态函数     这类的名字一般是libxxx.a;利用静态函数编译成的文件比较大,因为整个 函数的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数改变了,那么你的程序必须重新编译。 2. 动态函数 &n
转载 2024-09-11 15:53:38
34阅读
    IOS中创建使用链接(总结)一、动态链接与静态链接的区别  从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。分静态和动态两种。1. 静态函数 这类的名字一般是libxxx.a;利用静态函数编译成的文件比较大,因为整个 函数的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要
由于socketio依赖boost,所以要先编译出支持arm64的boost1. 编译支持arm64的boost我们需要用的是1.68版的boost,因此我选择了手动下载1.1 官网直接下载指定版本 boost_1_68_0.tar.gz[官网地址] (https://www.boost.org/users/history/)1.2 切换到下载好的cmake所在目录$ cd XXX/Desk
  这篇总结什么?       在该系列的上一篇的文章中,我们总结的大致内容如下:      1、视频录制  AVCaptureSession + AVCaptureMovieFileOutput      2、视频录制 AVCaptureSessi
Android系统的底层由C/C++编写,上层Android应用程序通过Java虚拟机调用底层接口。衔接底层C/C++与Java应用程序间的接口正是JNI(Java  Native  Interface)。本文讲解如何在Mac下打包so,并安装到APK中。1、环境的安装 Android的环境安装ADT、NDK、SDK、JDK、ANT等一些环境的搭建,http://www.
转载 2023-08-25 12:02:56
148阅读
今天介绍下,如何利用Xcode,新建一个静态,以及如何编译成i386、armv7、armv7s 等平台架构。开发环境:MAC OS X 10.9.4 + Xcode 5.0.2背景知识:分两种:静态(.a、.lib) 和 动态(.so、.dll),.a 和 .so 为linux平台下后缀名,.lib 和 .dll 为windows平台下后缀名。【对静态和动态不熟悉的,请参见博文:&
转载 2024-10-29 20:04:09
164阅读
 1 got rel plt的由来在代码中像这样调用其他so中的函数、全局变量, 程序编译完成后,程序并不知道这些函数和变量的内存地址的, 因为它们都在别的so,而这些so可能存在进程中的任何内存地址。 所以,程序跑起来时,才能找到它们的地址,然后访问或执行。BTW: (1)程序从磁盘文件映射到进程内存中,叫装载 (2)找到上面说的那些函数/变量地址,叫重定位 (3)装载 + 重定
# iOS加载SO动态 动态(Dynamic Library)是一种在程序运行时动态加载的代码,可以包含可执行的代码和数据。在iOS开发中,使用动态可以实现代码的模块化和动态更新,提高代码的复用性和可维护性。本文将介绍iOS如何加载SO动态,并提供代码示例。 ## 1. 动态的类型 在iOS开发中,有两种类型的动态:动态链接(Dynamic Link Library,简称DL
原创 2024-01-11 10:11:40
1410阅读
 linux下动态今天无意间发现在linux下share object(dynamic library)中的函数竟然可以不通过回调的方式直接访问主程序中的函数,瞬间颠覆以前对于动态的观念.1、如下代码所示,ibhi.so中有一个函数hello, 主程序main中有一个函数hi_out, 那么在main中调用libhi.so中的hello时,hello会自动找到main程序中的hi_o
ventoy 这个工具实现了绝大多数运维人员的愿望。最主要的就是实现了直接将想要安装的系统ISO文件拷贝到U盘就可以进行安装,而不需要单独制作启动盘。而且支持多个ISO同时启动,这为运维安装系统带来了极大的灵活性。grub虽然自带loopback来映射iso文件,但也只能实现提取内核和initrd这样的小文件来启动,对于几个G的大ISO是没办法直接全部搞到内存来的。大部分能直接从ISO安装的系统也
# iOS App是否可以使用SO? 在开发iOS应用程序时,我们经常会遇到需要使用第三方的情况。那么,iOS app是否可以使用SO呢?答案是不能。 ## 为什么iOS不支持SOiOS应用程序是使用Objective-C或者Swift编写的,而SO通常是使用C或者C++编写的。iOS应用程序在编译时会被转换为Mach-O文件格式,而SO是以动态链接的形式存在的,这两者的文
原创 2024-02-23 05:33:19
601阅读
文章目录一、第一种方式apk在设备上的路径系统应用.so在设备上的路径将应用复制到 `/system/app` 目录下的操作查看Mac下面文件路径:查看Mac下本地下载的位置获取aar中的.so文件二、第二种方式三、第三种方式 为什么会有这个需求,因为系统应用的话需要在系统目录下面有相关的.so,但是有的厂商会做这个处理,有的没有处理,这时候需要自己来操作 一、第一种方式本次是在4.4的TV
转载 2023-12-31 19:45:05
366阅读
# Android与iOS底层的比较与应用 在移动开发领域,Android和iOS作为两大主流操作系统,各自拥有独特的底层。这些底层为开发者提供了丰富的功能和接口,使得开发过程更加高效和便捷。本文将对Android和iOS的底层进行比较,并提供一些代码示例,以帮助开发者更好地理解和应用这些底层。 ## Android底层 Android操作系统基于Linux内核,其底层主要包括
原创 2024-07-25 08:19:29
36阅读
首先要知道这个第三方的so是不是按jni标准写的,如果是那就简单了,直接写个native调用就行了。如果不是那就比较麻烦了,必须要把这个so库里面的函数封装一下在调用,下面进入正题。假设这个放在/system/vendor/lib下面,名字为libtest.so,我们要调用的方法是get_status,我分别列出在第三方的app和framewok怎样调用。首先是在第三方app的调用,这里的核心
转载 2024-01-09 23:21:30
115阅读
# Android中使用多个CMakeLists引入so 在Android开发中,我们经常会使用CMake来管理项目中的C/C++代码,并将其编译成共享(.so文件)供Java代码调用。有时候我们可能会需要引入多个第三方或者模块,每个可能都有自己的CMakeLists文件。本文将介绍如何在Android项目中使用多个CMakeLists文件来引入so。 ## 1. 创建Android
原创 2024-03-07 03:47:09
281阅读
# Android 使用 CMakeList 引入多个so ## 1. 整体流程 首先我们需要在 CMakeList 文件中添加多个 so ,然后配置 Android.mk 文件,最后编译整个项目。 ```mermaid gantt title Android 使用 CMakeList 引入多个so流程 section 添加so 创建CMakeList
原创 2024-03-15 04:17:04
342阅读
一.  静态包括.lib和.h文件,在工程中使用静态分为3步:<1> 在工程中加入静态,有两种方法:      **方法一:项目设置中引用.lib,project->   setting->   link->   objec
转载 2024-05-29 10:56:56
181阅读
  1 前言  windows 平台使用动态加载来扩展功能。  动态的使用包含静态和动态两种方式。静态不在今天讨论范围内。动态加载,通过是通过LoadLibary 或者 LoadLibaryEx,以及其他API获取模板基址。然后获取地址,转化成函数指针,然后调用。这里面有很多工作量都是重复的。比如加载函数,获取地址,定义函数指针。因为可以抽象出来,做一个类对象,来做这部分内容。  2 目标  
转载 2023-10-12 11:22:08
397阅读
动态相关在实习期间做的事情是对组内项目编译的辅助工具编写,期间涉及到很多关于动态相关的一些内容,现在将动态相关的一些知识来整理和重新学习一下,目前只考虑Linux环境什么是动态说动态之前要来看一下什么是"",是一系列可复用,成熟的,已经写好的代码,动态是使用非常多的一种技术,动态在程序运行的时候被载入(静态是编译时),不同的程序调用相同的的时候,内存中只存在一方该shared
转载 2023-12-18 11:06:24
74阅读
一、Android NDK开发二、Android SO三、第一个SO制作介绍一下如何往已有工程添加SO。一起动手实践第一个SO。主要的步骤如下:3.1 在main目录下新建jni目录3.2 找到项目的gradle.properties,添加一行 android.useDeprecatedNdk=true3.3 在jni目录下添加一个空的C/CPP源文件在这里,我创建了一个空的hello.c
转载 2023-07-24 21:57:23
159阅读
  • 1
  • 2
  • 3
  • 4
  • 5