2015-12-11 3 views
1

Я пытаюсь перекрестно скомпилировать большой проект в android (слишком большой, чтобы перенести его в формат ndk-build). Я пришел из Java-мира, поэтому я совершенно новичок во всей этой компиляции, C, C++. Дело в следующем:Создание автономных библиотек

Этот большой проект использует xerces-c как библиотеку, которая в свое время зависит от транскодера ICU. Я перекрестно скомпилировал оба из них, в результате чего libxerces-c.a, libicuuc.a и libicudata.a

Когда я перекрещиваю свой большой проект, configure проверяет заголовки (они есть) и библиотеку xerces-c. Однако, когда я запускаю команду make, выполнение не выполняется, потому что -licuuc -licudata не входит в команду компиляции.

Есть ли способ создать автономный libxerces-c, который включает libicuuc и libicudata? Какой-то флаг, который я могу включить в CFLAGS, CXXFLAGS или LDFLAGS? Некоторые параметры скрипта configure?

Поскольку я совершенно новый по этому вопросу, пример был бы весьма полезен. Заранее благодарим за помощь

+1

Что случилось только с указанием необходимых дополнительных библиотек для линкера? –

+0

Что мне нужно изменить make-файлы (несколько), и это происходит с 9 библиотеками. Не только xerces-c, поэтому в конце я получаю 1000 -l флагов. Я просто хочу знать, есть ли способ сделать это и сохранить все время изменения конфигураций 20K-строк и make-файлов. –

+0

Флаги компилятора/компоновщика являются специфичными для реализации. Возможно, есть способ достичь того, что вы просите, но это будет зависеть от вашего (крестного) компилятора. –

ответ

0

В Make-файлах вы можете определить выражения, которые будут использоваться во всех командных строках. Если вы используете это средство правильно, вы можете иметь одну и ту же команду в количестве (или нескольких) файлов по своему усмотрению. В Make-файлах, которые вы видите из других проектов, вы увидите, что люди обычно используют CFLAGS для (сюрпризов) флагов и опций для компилятора C и LIBS для вещей, предназначенных для компоновщика, но вы можете использовать любое имя, которое вам нравится для макросов.

Вы также можете определить списки файлов для работы и файлы, на которых они зависят.

В Linux на некоторых пакетах также установлен файл конфигурации, который позволяет использовать приложения с именем pkg-config, чтобы узнать все флаги и параметры библиотеки для этого пакета. Это позволяет избежать необходимости использования явных путей в Makefile.

Вот несколько учебников:

Simple tutorial.

Another intro

Смежные вопросы