Информация об изменениях

Сообщение Re[3]: Android: ненависть, выраженная словами от 24.07.2018 16:32

Изменено 24.07.2018 16:33 eskimo82

Re[3]: Android: ненависть, выраженная словами
A>А нельзя ли поподробнее рассказать про этот процесс (показать пример makefile уровня "hello world")?
Из того что есть сейчас под рукой:

Пример 1: bash 4.3
Ничего делать не надо, кроме как правильно сконфигурить и сбилдить стандартными средствами*:
./configure -prefix=/data/local --exec-prefix=/data/local/bin --host arm-linux-androideabi && make


* Пути к тулчейну для кроскомпиляции должны быть прописаны в текущем PATH:
configure:2767: checking build system type
configure:2781: result: i686-pc-linux-gnu
configure:2801: checking host system type
configure:2814: result: arm-unknown-linux-androideabi
configure:3403: checking for arm-linux-androideabi-gcc
configure:3430: result: /home/user/opt/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc



Пример 2: самописный make для сборки динамической либы
ANDROID_NDK  ?= ~/opt/android-ndk-r9
TOOLCHAIN    ?= $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86_64
CROSSCOMPILE ?= $(TOOLCHAIN)/bin/arm-linux-androideabi-
SYSROOT      ?= $(ANDROID_NDK)/platforms/android-18/arch-arm

#ANDROID_NDK  ?= ~/opt/android-ndk-r10
#TOOLCHAIN    ?= $(ANDROID_NDK)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
#CROSSCOMPILE ?= $(TOOLCHAIN)/bin/aarch64-linux-android-
#SYSROOT      ?= $(ANDROID_NDK)/platforms/android-L/arch-arm64

CC := $(CROSSCOMPILE)gcc --sysroot $(SYSROOT)
LD := $(CROSSCOMPILE)gcc --sysroot $(SYSROOT)
MD := mkdir -p
RM := rm -f


INCDIR := include
OBJDIR := obj
LIBDIR := lib
#LIBDIR := lib64
SRCDIR := src

LIBS :=


$(OBJDIR)/%.o: $(SRCDIR)/%.c
    $(MD) $(dir $@)
    $(CC) -std=c99 -c $< $(addprefix -I,$(GINCDIR) $(INCDIR)) -fPIC -o $@


SRCFILES := sample.c
TARGETSO := sample.so
OBJFILES := $(addprefix $(OBJDIR)/,$(SRCFILES:.c=.o))

$(LIBDIR)/$(TARGETSO): $(OBJFILES)
    $(MD) $(dir $@)
    $(LD) $^ $(addprefix -L,$(GLIBDIR) $(LIBDIR)) $(addprefix -l,$(LIBS)) -shared -o $@



.PHONY: all, clean

all: $(LIBDIR)/$(TARGETSO)

clean:
    $(RM) $(OBJFILES)

# vim:noet:tw=80:ts=4:




A>Сейчас я кое-как собираю программы для Андроид, использую Qt-for-android но не покидает ощущение черезжопности процесса.
Re[3]: Android: ненависть, выраженная словами
A>А нельзя ли поподробнее рассказать про этот процесс (показать пример makefile уровня "hello world")?
Из того что есть сейчас под рукой:

Пример 1: bash 4.3

Ничего делать не надо, кроме как правильно сконфигурить и сбилдить стандартными средствами*:
./configure -prefix=/data/local --exec-prefix=/data/local/bin --host arm-linux-androideabi && make


* Пути к тулчейну для кроскомпиляции должны быть прописаны в текущем PATH:
configure:2767: checking build system type
configure:2781: result: i686-pc-linux-gnu
configure:2801: checking host system type
configure:2814: result: arm-unknown-linux-androideabi
configure:3403: checking for arm-linux-androideabi-gcc
configure:3430: result: /home/user/opt/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc



Пример 2: самописный make для сборки динамической либы

ANDROID_NDK  ?= ~/opt/android-ndk-r9
TOOLCHAIN    ?= $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86_64
CROSSCOMPILE ?= $(TOOLCHAIN)/bin/arm-linux-androideabi-
SYSROOT      ?= $(ANDROID_NDK)/platforms/android-18/arch-arm

#ANDROID_NDK  ?= ~/opt/android-ndk-r10
#TOOLCHAIN    ?= $(ANDROID_NDK)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
#CROSSCOMPILE ?= $(TOOLCHAIN)/bin/aarch64-linux-android-
#SYSROOT      ?= $(ANDROID_NDK)/platforms/android-L/arch-arm64

CC := $(CROSSCOMPILE)gcc --sysroot $(SYSROOT)
LD := $(CROSSCOMPILE)gcc --sysroot $(SYSROOT)
MD := mkdir -p
RM := rm -f


INCDIR := include
OBJDIR := obj
LIBDIR := lib
#LIBDIR := lib64
SRCDIR := src

LIBS :=


$(OBJDIR)/%.o: $(SRCDIR)/%.c
    $(MD) $(dir $@)
    $(CC) -std=c99 -c $< $(addprefix -I,$(GINCDIR) $(INCDIR)) -fPIC -o $@


SRCFILES := sample.c
TARGETSO := sample.so
OBJFILES := $(addprefix $(OBJDIR)/,$(SRCFILES:.c=.o))

$(LIBDIR)/$(TARGETSO): $(OBJFILES)
    $(MD) $(dir $@)
    $(LD) $^ $(addprefix -L,$(GLIBDIR) $(LIBDIR)) $(addprefix -l,$(LIBS)) -shared -o $@



.PHONY: all, clean

all: $(LIBDIR)/$(TARGETSO)

clean:
    $(RM) $(OBJFILES)

# vim:noet:tw=80:ts=4:




A>Сейчас я кое-как собираю программы для Андроид, использую Qt-for-android но не покидает ощущение черезжопности процесса.