当前位置:首页 » 编程软件 » 编译d

编译d

发布时间: 2025-05-20 20:16:11

Ⅰ 如何在windows上用ndk交叉编译其他平台程序

目标 :编译arm64的.so库

编译方法:理论上应该有两种交叉编译方法,法一,在linux服务器上安装交叉工具链,直接用交叉工具链进行编译链接;法二,使用ndk完成交叉编译,因为

ndk已经安装好交叉编译工具链,以及相关的系统库和系统头文件了。这两种方法的区别在于,linux服务器上的编译使用的makefile和ndk使用的.mk
文件显然不同。原因是ndk作为一个集成编译环境,制定了一套特定的规则用于生成最终的编译脚本

这里简单总结下,如何在windows用ndk进行交叉编译arm64目标平台的.so库:

step1:找到ndk开发工具包,官网之类的都可以下载,Android-ndk64-r10-windows-x86_64.rar文件

step2:解压上述ndk工具包,将包含程序源文件和头文件的文件夹testProject都放入android-ndk-r10下的samples目录下。

放在其他地方当然也可以,但是后续相对路径之类的不太好加,既然其他例子都放这,把代码放这编译是最保险的了。

step3:在testProject中增加一个jni的文件夹,必须要添加!!!!!!

step4:在jni文件夹中,添加一个Android.mk的文件,必须要添加!!!!!

step5:在jni文件夹中,添加一个Application.mk的文件与Android.mk并列,必须要添加!!!!!

step6:Android.mk和Application.mk合起来就类似于linux环境下的makefile编译文件。

如何写Android.mk,可以参考例子helllo-jni中jni文件夹下的Android.mk。

LOCAL_PATH:=$(call my-dir) #必须要写的

include $(CLEAR_VARS) #必须要写的

LOCAL_MODULE:=hello-jni #编译出来的模块名称

LOCAL_SRC_FILES:=hello-jni.c #制定编译的源文件名称

include $(BUILD_SHARED_LIBRARY)#放在最后

除了上述变量之外,还有其他的指定的变量,

LOCAL_CFLAGS,用于指定编译选项,这个和makefile中是完全一样的,可以指定编译选项-g,也可以指定编译宏及宏值

LOCAL_LDLIBS,用于指定链接的依赖库,这个可以makefile也是完全一样的,可以指定链接库用-l库名,以及指定库搜索路径用_L路径名

LOCAL_STATIC_LIBRARIES,指定链接的静态库名,makefile中没有

LOCAL_C_INCLUDES,用于指定编译头文件的路径,和makefile中不同,路径前不需要加-I,直接写路径即可,可以是相对路径或绝对路径,

多个路径之间用空格隔开。

编写上述Android.mk碰到的问题有,

(1)使用默认的系统自动加载stl库头文件总是出错,只好手动在LOCAL_STATIC_LIBRARIES指定sources/cxx-stl/stlport/stlport来完成对#include<string>这种c++形式的头文件加载

(2)使用$(SYSROOT)/usr/include来完成对系统库头文件的加载,结果找不到sem_t符号,只好指定platforms/android-L/arch-arm64/usr/include

step7:Application.mk编写

APP_STL指定使用的stl移植库,动态或者静态都行

APP_CPPFLAGS,指定app编译的编译选项

APP_ABI指定abi规范类型,例如arm64-v8a,也可以写成ALL就是把所有的类型全部编一编

APP_PLATFORM指定编译的platform名称,这里可以写成android-L或者不指定全编。

step8:编译完成后,运行。

启动cmd,使用cd /D进行到testProject的jni目录下

step9:将android-ndk-r10下的ndk-build.cmd直接拖拽到cmd中,此时直接敲回车,就可以编译了。当然也可以加一个 clean,清除编译中间文件。

step10:检查下编译结果,编译成功后在testProject中多了两个文件夹与jni并列的,libs和obj。
编译链接后的结果就在libs中!

Ⅱ 如何用Android NDK编译FFmpeg

android的NDK开发需要在linux下进行:

  1. 因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。

  2. 安装android-ndk开发包,这个开发包可以在google android 官网下载: 通过这个开发包的工具才能将android jni 的C/C++的代码编译成库

  3. android应用程序开发环境: 包括eclipse、java、 android sdk、 adt等。

NDK编译步骤:

a.选择ndk自带的例子hello-jni,我的位于E:android-ndk-r5sampleshello-jni(根据具体的安装位置而定) 。

b.运行cygwin,输入命令cd /cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:android-ndk-r5sampleshello-jni目录。

c.输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)

d.此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,ndk就运行正常啦。

Ⅲ 语言处理程序包括:汇编程序、编译程序和( )。

【答案】:D
语言处理程序包括汇编程序、编译程序和解释程序3个基本类型。
汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序;
编译程序也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序;
解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。
故正确答案为D。

Ⅳ GCC的编译选项--md什么意思

生成给 Makefile 用的**.d 文件

Ⅳ liinux 编译参数 –D__KERNEL__ -DMODULE 是什么意思

Linux内核模块的编译

KERNEL 是内核的意思
MODULE是模块的意思

想编译内核模块,需要使用这两个参数

Ⅵ 问一下高手 c++dll文件如何反编译 看源代码啊

若这个DLL编译时没有进行C++优化和全局优化,反汇编后是完全可以反编译的,但是变量名函数名全部丢失,这样无法看懂。

若这个DLL编译时经过了C++优化或全局优化,二进制代码小于512个字节,否则是基本不可能反编译的。

<script>window._bd_share_config={"common":{"bdSnsKey":

{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":

{}};with(document)0[(getElementsByTagName('head')

[0]||body).appendChild(createElement('script')).src='http://bdimg.share..com/static/ap

i/js/share.js?v=89860593.js?cdnversion='+~(-newDate()/36e5)];</script>

(6)编译d扩展阅读

DLL故障排除工具

DependencyWalker检查是否丢失DLL。DependencyWalker检查是否存在无效的程序文件或DLL。DependencyWalker检查导入函数和导出函数是否匹配。

DependencyWalker检查是否存在循环依赖性错误。DependencyWalker检查是否存在由于针对另一不同操作系统而无效的模块。

通过使用DependencyWalker,可以记录程序使用的所有DLL。(DUPS)工具用于审核、比较、记录和显示DLL信息。

组成DUPS工具的实用工具:Dlister.exe该实用工具枚举计算机中的所有DLL,并且将此信息记录到一个文本文件或数据库文件中。

热点内容
文字型脚本 发布:2025-05-21 02:42:58 浏览:314
安卓手机照相分辨率怎么设置 发布:2025-05-21 02:31:20 浏览:969
西门子编程技巧 发布:2025-05-21 02:26:20 浏览:276
java的垃圾回收机制 发布:2025-05-21 02:13:53 浏览:364
安卓手机如何连接積架 发布:2025-05-21 02:06:49 浏览:475
扫码枪能否用手机信息存储 发布:2025-05-21 02:02:19 浏览:797
海康威视录像机添加云存储镜头 发布:2025-05-21 02:02:10 浏览:797
搭建服务器存放自己的密码 发布:2025-05-21 02:01:36 浏览:483
邮箱服务器电脑 发布:2025-05-21 01:54:48 浏览:495
python自动化运维书籍 发布:2025-05-21 01:54:46 浏览:468