5 votes

Android.mk - Comment assembler et lier des fichiers en assembleur ARM

J'ai quelques fichiers source *.cpp et quelques fichiers assembleur *.s ARM que je veux assembler et lier dans mon fichier Android.mk (en exécutant ndk-build script).

Mon fichier Android.mk ressemble à ceci :

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE    := libTestJNI
LOCAL_SRC_FILES := Test.cpp TestAS_gas4.s 
LOCAL_CFLAGS := -DHAVE_CONFIG_H -DFPM_ARM -ffast-math -O3 -DOPT_ARM
LOCAL_LDLIBS    += -llog
include $(BUILD_SHARED_LIBRARY)

Malheureusement, le fichier *.s n'est pas reconnu. ndk-build dit :

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
make: *** No rule to make target `/cygdrive/c/projects/TestAS_gas4.s', needed by `/cygdrive/c/projects/obj/local/armeabi/objs-debug/libTestJNI/TestAS_gas4.o'.  Stop.

Dans un makefile "normal", je devrais assembler en utilisant "as" dans une règle. Comment cela se passe-t-il dans les fichiers Android.mk ?

/Kim

5voto

Atoadaso Points 329

C'est embarrassant, mais le problème était que les fichiers *.s se trouvaient dans un sous-dossier. L'erreur "No rule to make target" est une très mauvaise description d'erreur dans ce cas.

/Kim

0voto

rzr Points 979

Indice : changer les suffixes :

ln -fs %.s %.S.arm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X