Android.mk управляет созданием файла .o из множества файлов .txt, а затем связывает его с другими файлами .o, созданными из файла files.cpp. - PullRequest
1 голос
/ 08 ноября 2011

Я портирую менеджер соединений модема, написанный на C ++, из linux в gingerbread.В конечном итоге это не «приложение» с «графическим интерфейсом», которое я использовал бы в качестве оболочки Java с NDK, а служба, которая вызывается при загрузке из «init.rc».Я нашел несколько устаревших документов, связанных с системой сборки Android в build / core /.Там вы найдете несколько html-файлов, объясняющих основы системы сборки Android, и несколько «file.mk», которые представляют собой шаблоны для типичной ситуации, такой как создание исполняемого файла c ++, статических библиотек, разделяемой библиотеки и т. Д.

Я размещаю свое деревосо всеми исходниками в external / myservice, и он должен быть скомпилирован одновременно с самим Android.(Я уже перенес ядро ​​на свою платформу, и оно работает, только модем ушел)

В подпапке в файле Android.mk у меня есть куча файлов ".cpp", перечисленных спеременная LOCAL_SRC_FILES: = cppfile1.cpp cppfile2.cpp .... Это сгенерирует cppfile1.o cppfile2.o ...

Мне нужно связать эти cppfile * .o с objfile.o для формирования libfile.так.Я нашел правила о том, как сгенерировать libfile.so из набора файлов .o.

Когда все усложняется, это перенести команду "linux makefile" для создания objfile.o.Вот как это выглядит

$(LD) $(LDFLAGS) -r -b binary -o QMIDB.o \  
            QMI/Entity.txt \  
            QMI/EnumEntry.txt \  
            QMI/Enum.txt \  
            QMI/Field.txt \  
            QMI/Struct.txt  

Это означает, что это задача компоновщика - объединить кучу текстовых файлов для создания этого objfile.o.Этот файл является просто набором инициализированной структуры данных, в нем нет кода для выполнения, но довольно уродливо просматривать все файлы .txt с помощью текстового редактора.

Понятия не имею, как интегрировать это в файл Android.mk.Как это можно сделать?Я даже ценю подсказку, где я могу найти больше информации.Легко найти информацию о создании приложений для Android, но это другая история, чтобы найти что-то ближе к самому Android / Kernel.

1 Ответ

0 голосов
/ 08 ноября 2011

от мк.файл файл, который вы можете легко получить таким файлом ....

Вам нужно использовать настройки Android Ndk и настройки Cygwin, если вы используете платформу Windows для генерации файлов из исходного кода.

Во-первыхустановите и поместите ndk в папку ...

Затем установите установку cygwin (не по умолчанию), проверьте все функции в процессе установки (это своего рода терминал linux), поскольку команда ndk-build распознается из терминала linux.

Теперь из вашего терминала cygwin получите доступ к файлу jni папки вашего проекта .. или где находится mk ...

http://developer.android.com/sdk/ndk/index.html

Используйте следующий реферал, как запустить команду ndk-build из cygwinтерминал ..

Теперь, предоставив полный путь к ndk, мы используем команду ndk-build ...

После этого скомпилированный код генерирует файл .so для нашего проекта ...

Теперь мы используем команду System.loadlibrary для использования файла so, т.е. теперь можно использовать наш собственный код.

Обратите внимание, что для получения файла вида mk нам необходимо выполнить компиляцию с помощью ndk setup.Мы можемНе копируйте и не вставляйте непосредственно файл, чтобы запустить наш собственный код. Также мы используем платформу Windows, для этого нам понадобится установка cygwin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...