导航:首页 > 源码编译 > 手机上arm语言编译器

手机上arm语言编译器

发布时间:2023-05-11 22:56:57

1. 怎么安装ARMtranslateARM编译

android x86版已经集成了arm。你可以用RE浏览器看一下,system\lib,销销下面已碰斗脊经有arm目录了 或者试试用window系统挂载,然笑渗后把它放进去,我都用win7下载apk放进我装的安卓系统盘。

2. x86与ARM架构下的编译器的区别

ARM是简单指令集。。。 指令集长度短

3. 为毛这么多软件不能用arm编译器怎么装

一般安装了一个软件,会包括编译环境,编码器,优化器等,现在都集成了很多,ARM支持C,汇编,高级的还有vc++ 比如我用的ads1.20 就有那么多。
至于下程序到arm上,需要安装一个软件,我用的是HJTAG,因为我用JTAG仿真,所以我一共安装了2个软件。
但如果跑系统,你还得有头文件,这个与你arm 用的操作系统有关,是代码。
步骤肯定会有,1是你不会机器码,在arm上就是机器码,所以一定会有编译器,但这些是集成的,下载软件是烧程序的,这个和下载器配套。其他的是编写程序相关的,初学者可以不跑系统,直接当单片机用,我至今只玩过ucos ,没玩linux

4. 下软件是下arm64还是x64

x64
第一、cpu配套内存访问速度,这方面x86速度肯定更快。32位C编译器编译C函数时候调用使用内存栈传递裤磨世参数,因为内存访问速度已经够快,再加上cpu高速缓存,运行速度能再上一个台阶。而ARM的ram是和CPU在一起的,更多考虑了功耗等问题。ram访问速度更慢,但作为补偿C程序函数的调用约定是在32位模式中用4个寄存器传递前4个32位参数数据,在64位模式中用8个寄存器传递前8个64位参数数据
第二、寄存器数量,这方面arm寄存器比x86寄存器更多,这对C程序的编译会更友好一些
第三、关于GPU,arm芯片都是和GPU一起的,为的是减少功耗,x86要看规格和厂商,比如笔记本芯片大多带集成GPU,而台式机可能就没有
第四、其他类似simd指令功能使用很不一样,相对来说arm规范很多游李,而x86的simd会更糟糕,x86的simd是16字节对齐,而arm的simd是4字节对齐。再比如:x86的simd整数乘法会增长数据长度,至少sse2指令集是如此的胡肢,而arm的乘法根据不同指令自己选择。

5. 新人求教,编译一个最简单的Android程序,提示下面的错误咋解决

注意以下事项:
1、32位系统下的编译

如果需要在32位系统中编译android系统,在编译前需要对部分makefile进行修改

首先修改build/core/main.mk,修改的内容如下所示:

-ifneq (64,$(findstring 64,$(build_arch)))

+ifneq
(i686,$(findstring i686,$(build_arch)))

$(warning
************************************************************) $(warning You are attempting to build on a 32-bit system.)

$(warning Only 64-bit build environments are supported beyond froyo/2.2.)

其次修改如下四个文件:

external/clearsilver/cgi/Android.mk
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk # This forces a 64-bit build for Java6
-LOCAL_CFLAGS += -m64
-LOCAL_LDFLAGS += -m64
+LOCAL_CFLAGS += -m32
+LOCAL_LDFLAGS += -m32即将LOCAL_CFLAGS和LOCAL_LDFLAGS由-m64改为-m32,从而指定使用32位系统进行编译如果使用 64bit 的操作系统编译,这些就都不用修改,但记得需要安装:For 64-bit servers the following extra packages may be needed:
"sudo apt-get install libc6-dev-i386" (libc6-dev-amd64 if AMD CPU)
"sudo apt-get install g++-multilib lib32ncurses5-dev lib32z1-dev"
还有 jdk64bit 的版本编译2 、build/core/base_rules.mk:128:*** frameworks/opt/emoji/jni:
.... libgl2jni already defined by framwworks/base/opengl/tests/gl2_jni/jni 停止

从编译规则上看:
# Make sure that this IS_HOST/CLASS/MODULE combination is unique.
mole_id := MODULE.$(if \
$(LOCAL_IS_HOST_MODULE),HOST,TARGET).$(LOCAL_MODULE_CLASS).$(LOCAL_MODULE)
ifdef $(mole_id)
$(error $(LOCAL_PATH): $(mole_id) already defined by $($(mole_id)))
endif

在framwworks/base/opengl/tests/gl2_jni/下面定义的android.mk定义了:
LOCAL_MODULE := libgl2jni
include $(BUILD_SHARED_LIBRARY)
导致生成的动态库重复,这是不对的,修改tests这个目录不参与编译即可,最直接的办法删除掉framwworks/base/opengl/tests/gl2_jni这个文件夹

3、AIDL 编译报couldn't find import for class原因
“AIDL服务只支持有限的数据类型,因此,如果用AIDL服 务传递一些复杂的数据就需要做更一步处理。AIDL服务支持的数据类型如下:
Java的简单类 型(int、char、boolean等)。不需要导入(import)。String和 CharSequence。不需要导入(import)。
List和 Map。但要注意,List和Map对象的元素类型必须是AIDL服务支持的数据类型。不需要导入(import)。AIDL自动生成 的接口。需要导入(import)。
实现 android.os.Parcelable接口的类。需要导入(import)。
其中后两种数据类 型需要使用import进行导入,传递不需要 import的数据类型的值的方式相同。传递一个需要import的数据类型的值(例如,实现android.os.Parcelable 接口的类)的步 骤略显复杂。除了要建立一个实现android.os.Parcelable接口的类外,还需要为这个类单独建立一个aidl文件,并使用parcelable关键字进行定义。”
没有加LOCAL_AIDL_INCLUDES += xxx ,所以找不到我的parcelable aidl文件。

修改android源码根目录下的build/core/pathmap.mk把你的目录加进去,此时再make update-api

4、老是提示 @Override错误 方法未覆盖其父类的方法
使 用JDK1.6编译没有问题,使用JDK1.5编译,会报@Override方法未覆盖其父类的方法。实际上这个方法是类实现的接口中方法,
但是,这个语 法的jdk1.6的下面是可以通过的,也就是说jdk1.6认为类覆盖父类方法与实现接口方法都叫override,而jdk1.5不
是这样认为的,不知 道这是当初jdk1.5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从
OO角度来看,覆盖父类方法与实现接口方法都 可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种
表现方式。

更改jdk版本为1.6即可

5、编译alsa-lib库错误

android系统开发移植alsa-lib库的过程中编译的时候出现了如下的错误
/tmp/cckyaR40.s: Assembler messages:
/tmp/cckyaR40.s:2763: Error: selected processor does not support `mrs ip,cpsr'
/tmp/cckyaR40.s:2764: Error: unshifted register required -- `orr r2,ip,#128'
/tmp/cckyaR40.s:2765: Error: selected processor does not support `msr cpsr_c,r2
字面的意思报的是汇编错误,选择的处理器不支持mrs和msr指令。
原来的ARM指令有32位和16位两种指令模式,16位为thumb指令集,thumb指令集编译出的代码占用空间小,
而且效率也高,所以android的arm编译器默认用的是thumb模式编译,问题在于alsa的代码中有部分的内容
用到了32位的指令,所以才会报如下的错误,修改的方法也很简单,在Android.mk中加入如下内容即可:
LOCAL_ARM_MODE := arm
android的编译系统中LOCAL_ARM_MODE变量的取值为arm或者thumb,代表32位和16位两种arm指令集,默认为thumb
prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/../../../../arm-eabi/bin/ld: failed to set dynamic section sizes: Bad value

collect2: ld returned 1 exit status
make: *** [out/target/proct/merlin/obj/SHARED_LIBRARIES/libasound_intermediates/LINKED/libasound.so] 错误 1
解决此问题将alsa-lib/include/config.h文件中的如下宏定义去掉即可:
#define VERSIONED_SYMBOLS

开发过程中碰到过很多错误,后续再一一总结记录下来,有些忘记了。。

在android.mk中编译:

include $(CLEAR_VARS)
$(call add-prebuilt-files, STATIC_LIBRARIES, libyfcdca.a)

出现提示需要定义:LOCAL_MODULE_TAGS := optional 一般修改方法是:

build\core\definitions.mk 中的宏定义变量:

define include-prebuilt
include $$(CLEAR_VARS)
LOCAL_SRC_FILES := $(1)
LOCAL_BUILT_MODULE_STEM := $(1)
LOCAL_MODULE_SUFFIX := $$(suffix $(1))
LOCAL_MODULE := $$(basename $(1))
LOCAL_MODULE_CLASS := $(2)
include $$(BUILD_PREBUILT)
endef

在这里增加一个LOCAL_MODULE_TAGS := optional

但是这需要修改android源码,如果不是自已的android系统,这么做就麻烦了,所以必须想其它办法解决:

#include $(CLEAR_VARS)
#$(call add-prebuilt-files, STATIC_LIBRARIES, libyfcdca.a)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := libyfcdca.a
LOCAL_BUILT_MODULE_STEM := libyfcdca.a
LOCAL_MODULE_SUFFIX := lib
LOCAL_MODULE := yfcdca
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)

如此即可了。

6. ARM编译器与VC++编译器的区别

arm编译器编译出来的是arm处理器执行的二进制文件
而vc编译出来的是在x86构架windows系统下的可执行文件
区别很大,ads编译出来的文件是直接面对arm底层硬件的操作,很多系统函数需要自己编写
而vc中很多类,api函数已经是现成的了,直接调用就可以了

ads中填充0xff,其实在没有代码的地址上填充什么都无所谓,因为程序就不会运行到那个地址上,只是为了让编写程序的人清楚这个地方时空的。(个人的感觉,不知道对不对)

vc的编译我不是很清楚,你再看看其他答案吧。也许和arm的情况差不多

7. 安卓手机上可以用的编程软件c语言的系统有哪些

C4droidx0dx0ax0dx0aC4droid是一个C / C + + IDE + C / C + +编译器,GNU Makefile文件,SDL和Qt支持的Android。 C4droid支持ARM处理器(而不是设备与英特尔的x86和MIPS处理器)的设备。x0dx0a您x0dx0a可以创建自己的应用程序在Android手机中,运行(即使没有上网:编译器为离线状态)和出口的可执行文件(为终端的应用程序)或APK(GUI使用的x0dx0a应用程序)。此应用程序使用TCC和uClibc(GCC仿生libc的一个插件),所以它有完整的ANSI C和ISO C99支持。 x0dx0aC4droid可用于教育目的或在C和C + +语言的练习。x0dx0aC4droid支持语法高亮,代码完成和源代码格式,所以它是一个非常方便的工具,在旅途中进行编程。

阅读全文

与手机上arm语言编译器相关的资料

热点内容
win10ksm服务器地址 浏览:339
一元二次估算法 浏览:925
一招读懂源码 浏览:126
为什么苹果ipad连接不上服务器 浏览:927
可乐app怎么用卡密 浏览:766
路由器如何打开dhcp服务器地址 浏览:75
谷歌图片怎么搜索app 浏览:863
江苏文件夹模具厂 浏览:464
安卓系统网线拦截怎么关闭 浏览:31
服务器和终端是什么 浏览:516
换安卓苹果照片怎么弄回去 浏览:260
如何向ca中心申请服务器 浏览:187
从java到Android 浏览:551
福建加密app哪个好用 浏览:382
opengl游戏编程徐明亮pdf 浏览:619
单片机row怎么用 浏览:981
虚函数表与反编译 浏览:134
网上的滴滴抢单app是怎么做的 浏览:384
eve手游ios账号怎么登录安卓的 浏览:622
linuxoracle12安装教程 浏览:697