如何ubuntu 双击运行程序二进制可执行程序

I have Device on which i installed Android Gingerbread 2.3.4
Here i want to run C executable file on android device
I am able to run android NDK application on Device and its run perfect
But i want to run only one hello.c executable file on Device.
/* #includes #defines ... */
int main(){
// Do something when this is executed
Is there any way to compile this file with Android NDK tool chain and we can run this file's executable
I found one thing
but this is not working for me i am using Android NDK, Revision 7b of linux
There is no directory structure like this
解决方案 First, let me say that my answer is dependent on your using NDK r7b (it'll work for r7c as well) on Linux (change paths appropriately for other systems).
Edit: Last tested with NDK r8e on Linux and Nexus 4 with adb from SDK Platform-Tools Rev 18
on Windows 7 (latest as of ) without root access.
Yet Another Edit: Please read
for altering my instruction for native binaries that need to run on Android 5.0(Lollypop) and later.
Go to $NDK_ROOT (The topmost folder of NDK zip when unzipped).
Copy $NDK_ROOT/samples/hello-jni directory as $NDK_ROOT/sources/hello-world.
Go to $NDK_ROOT/sources/hello-world.
Edit AndroidManifest.xml to give the application an appropriate name (This is optional).
Go to $NDK_ROOT/sources/hello-world/jni. This is where the source code is.
Edit hello-jni.c, remove all the code, and put in your hello world code. Mine is:#include
int main( int argc, char* argv[])
printf("Hello, World!");
Edit Android.mk and change the line include $(BUILD_SHARED_LIBRARY) to include $(BUILD_EXECUTABLE). You can also change the LOCAL_MODULE line to the name you want for your executable(default is hello-jni)
Go back to $NDK_ROOT/sources/hello-world
Run ../../ndk-build to create the executable.
Copy it from $NDK_ROOT/sources/hello-jni/libs/armeabi/hello-jni to /data/local/tmp on the Android device and change it's permissions to 755 (rwxr-xr-x). If you changed the LOCAL_MODULE line in $NDK_ROOT/sources/hello-world/jni/Android.mk, the executable name will be the new value of LOCAL_MODULE instead of hello-jni. (All this is done via adb from the Android SDK.)
Execute the binary with full path as /data/local/tmp/hello-jni, or whatever you named it to.
And you're done( and free to start on the documentation in $NDK_ROOT/docs to get a better idea of what to do).
本文地址: &
我有我安装的Android姜饼2.3.4设备在这里,我要运行Android设备基于C的可执行文件我能够运行Android的设备NDK应用程序及其运行完美但我想只运行一个的hello.c 设备上的可执行文件。
/ *#包括#定义... * /诠释主(){
这是执行时//动作
返回0;} 有什么办法来编译这个文件的Android NDK 工具链,我们可以运行此文件的可执行我发现了一件事但这不是工作对我来说,我使用的Android NDK,修订7B 的Linux没有目录结构像这样解决方案 首先,让我说,我的回答是取决于你使用NDK R7B(它会为R7C工作以及)在Linux(改变路径适当其他系统)。 编辑:过去与 NDK R8E 测试上的的Linux 和的Nexus 4 与亚行从 SDK平台的工具启18 上的 Windows 7的的(最新为日)的没有root访问权限
然而,另一个编辑:请阅读this为改变我对需要上的的是Android 5.0(棒棒糖)的和更高版本。运行本地二进制指令问题到 $ NDK_ROOT (NDK的zip的顶层文件夹解压时)。复制 $ NDK_ROOT /样本/ HELLO-JNI 目录 $ NDK_ROOT /来源/你好世界。到 $ NDK_ROOT /来源/你好世界。编辑的AndroidManifest.xml 来给应用程序一个合适的名称(这是可选)。到 $ NDK_ROOT /来源/你好世界/ JNI 。这是源$ C $ c为。编辑 HELLO-jni.c ,删除所有code,并把你的的Hello World
code。我的是:的#includeINT主(INT ARGC,CHAR *的argv []){
的printf(“你好,世界!”);
编辑 Android.mk 并更改行包括$(BUILD_SHARED_LIBRARY)到包括$(BUILD_EXECUTABLE)。您也可以修改 LOCAL_MODULE 行你想为你的可执行文件名称(默认为 HELLO-JNI )返回 $ NDK_ROOT /来源/你好世界 运行 ../../ NDK的构建以创建可执行文件。从 $ NDK_ROOT /源将其复制/ HELLO-JNI /库/ armeabi / HELLO-JNI 到 /数据/本地/ tmp目录在Android设备上,并改变它的权限设置为755(rwxr-XR-X)。如果您在 $ NDK_ROOT /源改变了 LOCAL_MODULE 行/你好世界/ JNI / Android.mk ,可执行名字将是 LOCAL_MODULE 新的价值,而不是 HELLO-JNI 。 (所有这一切都是通过 ADB完成从Android SDK中。)完整路径为 /数据/本地的/ tmp / HELLO-JNI ,或随便你把它命名为执行二进制文件。和你做(免费开始在$ NDK_ROOT /文档的文档上获得怎样做一个更好的主意)。
本文地址: &
扫一扫关注官方微信可执行程序
义项指多义词的不同概念,如的义项:网球运动员、歌手等;的义项:冯小刚执导电影、江苏卫视交友节目等。
所属类别 :
可执行程序(executable program,EXE File)是指一种可在操作系统中浮动定位的可执行程序。在MS-DOS和MS-WINDOWS下,此类文件扩展名为·exe。WINDOWS操作系统中的二进制,分两种:一种为·com,另一种是·exe 。规定,有重名的exe和com,运行时优先执行com文件。如果只有A.exe,就可以直接输入A,而不用输入全名。但如果有A.com和A.exe,输入A则优先执行A.com,要运行A.exe只能输入A.exe而不能输入A。一般用于DOS,在WINDOWS系统中的执行文件一般都是.exe文件。在 MS-DOS 中,用以标识的。用户在提示行输入不带 .exe 扩展名的文件名后按 Enter 键或者点双击就能运行可执行程序。
外文名称 EXE File
所属类别 计算机 windows
后缀名 com exe
特点 在操作系统存储空间中浮动定位
用途 完成各项计算机功能
反编译软件 W32DasmC32Asm
意思(定义)
.com一般用于,在系统中的执行文件一般都是.exe文件。在 MS-DOS 中,用以标识的。用户在提示行输入不带 .exe 扩展名的文件名后按 Enter 键或者点双击就能运行可执行程序。
EXE 文件比较复杂,每个EXE文件都有一个文件头,结构如下:
EXE文件头的信息
―――――――――――――――――――├┤  意义   ┤├00h-01h ┤MZ'EXE文件标记   ┤├02h-03h ┤最后一页的字节数(每页512B)  ┤├04h-05h ┤文件长度(字节数)除以512的商+1 -|   ┤├06h-07h ┤重定位项的个数    ┤├08h-09h ┤文件头除16的商   ┤├0ah-0bh ┤程序运行所需最小段数 ┤├0ch-0dh ┤..............大.... ┤├oeh-0fh ┤堆栈段的段值 (SS)  ┤├10h-11h ┤........sp    ┤├12h-13h ┤文件校验和   ┤├14h-15h ┤IP   ┤├16h-17h ┤CS   ┤├18h-19h ┤............    ┤├1ah-1bh ┤............   ┤├1ch  ┤............     ┤―――――――――――――――――――――――――.EXE文件包含一个和一个可重定位程序映象。包含用于加载程序的信息,例如程序的大小和的初始值。还指向一个重定位表,该表包含指向程序映象中可重定位段地址的。文件头的形式与EXEHEADER结构对应:
EXEHEADERSTRUC
exSignature dw 5A4D.EXE标志exExraB最后(部分)页中的字节数exP文件中的全部和部分页数exRelocI重定位表中的数exHeaderS以为单位的大小exMinA最小分配大小exMaxA最大分配大小exInitSS初始SS值exInitSP初始SP值exChechS补码校验值exInitIP初始IP值exInitCS初始CS值exRelocT重定位表的字节exO覆盖号
EXEHEADERENDS程序映象
包含处理器代码和程序的初始数据,紧接在之后。它的大小以为单位,等于EXE文件的大小减去的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通过把该映象直接从文件拷贝到内存加载.EXE程序然后调整定位表中说明的可重定位段地址。定位表是一个,每个指向程序映象中的可重定位段地址。中的exRelocItems域说明了数组中的个数,exRelocTable域说明了分配表的起始文件。每个重定位由两个16位值组成:和段值。 为加载.EXE程序,MS-DOS首先读以确定.EXE标志并计算程序映象的大小。然后它试图申请内存。首先,它计算程序的大小加上PSP的大小再加上EXEHEADER结构中的exMinAlloc域说明的内存大小这三者之和,如果总和超过最大可用内存块的大小。则MS-DOS停止加载程序并返回一个出错值。如果总和没超过最大可用内存块的大小,它便计算程序映象的大小加上PSP的大小再加上EXEHEADER结构中exMaxAlloc域说明的内存大小之和,如果第二个总和小于最大可用内存块的大小,则MS-DOS 分配计算得到的内存量。否则,它分配最大可用内存块。分配完内存后,MS-DOS确定段地址,也称为起始段地址,MS-DOS从此处加载程序映象。如果exMinAlloc域和exMaxAlloc域中的值都为零,则MS-DOS把映象尽可能地加载到内存最高端。否则,它把映象加载到紧挨着PSP域之上。接下来,MS-DOS读取重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个,MS-DOS寻找程序映象中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,段地址便指向了内存中被加载程序的代码和。 MS-DOS在所分配内存的最低部分建造256的PSP,把AL和AH设置为加载 .COM程序时所设置的值。MS-DOS使用中的值设置SP与SS,调整SS初始值,把起始地址加到它之上。MS-DOS还把ES和DS设置为PSP的段地址.最后,MS-DOS从头读取CS和IP的初始值,把起始段地址加到CS之 上,把控制转移到位于调整后地址处的程序。
DOS可执行文件
最简单的可执行文件格式,可以在和中运行。它通过在添加ASCII字符串“MZ”(16进制中表示为4D5A)来标识。“MZ”是MS-DOS开发者之一的马克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写。
16位元新可执行文件
通过在添加ASCII字符串“NE”来标识。它只能运行在Windows和OS/2系统,而不能在DOS下运行。
16/32位元可执行文件
通过在文件头添加ASCII字符串“LE”来标识。它仅用来在Windows 3.x和Windows 9x中替代VxD驱动。
32位元线性可执行文件
通过在文件头添加ASCII字符串“LX”来标识。运行在OS/2 2.0以及更高版本中,也可用于某些扩展。
32位元可执行文件
这是最复杂也是目前最流行的格式,通过在添加ASCII字符串“PE”来标识。它主要运行于Windows 95和Windows NT以及更高版本的Windows中,也可在BeOS R3中运行。
64位元可执行文件
与前一种类似,但使用支持64位元的。因此它仅能在64位元的Windows系统中运行,譬如Windows XP 64-Bit Edition 和 Windows Server 2003 64-Bit Edition。
常用软件W32Dasm修改软件
{{each(i, video) list}}
{{if list.length > 8}}
查看全部 ${list.length} 期节目
{{if _first}}
内容来源于
百科兴趣圈
{{if list && list.length}}
360百科致力于成为最为用户所信赖的专业性百科网站。人人可编辑,让求知更简单。2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2016年2月 C/C++大版内专家分月排行榜第三2016年1月 C/C++大版内专家分月排行榜第三
2013年3月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2016年2月 C/C++大版内专家分月排行榜第三2016年1月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 程序 双击 运行不了 的文章

 

随机推荐