«/ Usr / bin / ld: не удается найти -lX11» для сборки ОС Firefox?

Пытался собрать ОС Firefox с Ubuntu 13.10 и получил эту ошибку:

host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)
/usr/bin/ld: cannot find -lX11
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] Error 1

Архитектура моей системы x86_64 с GCC 4.6.3

1
задан 18 December 2013 в 22:26

2 ответа

/ usr / bin / ld: не удается найти -lX11

Это означает, что вам не хватает библиотек разработки Xserver. Вы можете установить большинство из них, используя:

sudo apt-get install xorg-dev

В руководстве также сказано:

Требования для Linux

Для сборки на Linux вы нужно:

[большой глоток]

заголовки X11

0
ответ дан 18 December 2013 в 22:26

Прежде чем получить код для сборки ОС Firefox, вам необходимо правильно настроить систему сборки . В настоящее время вы можете использовать 64-битные дистрибутивы Linux и OS X.

Примечание. Чтобы встроить Firefox OS в телефон, начните с того, что телефон НЕ подключен к компьютеру. Мы сообщим вам, когда его подключить.

Требования для Linux

Для сборки на Linux вам понадобится:

A 64 bit GNU/Linux distribution (Ubuntu 12.04 recommended).
At least 4 GB of RAM/swap space.
At least 20 GB of available hard disk space.

Это больше, чем минимум, но иногда сборка завершается сбоем только потому, что она отсутствует ресурсы.

Вам также понадобятся следующие инструменты:

  • autoconf 2.13
  • bison
  • bzip2
  • ccache
  • curl
  • flex
  • gawk
  • git
  • gcc / g ++ / g ++ - multilib
  • make
  • OpenGL shared библиотеки
  • patch
  • заголовки X11
  • 32-битные ncurses
  • 32-битные zlib

Проблемы сборки эмулятора

Если вы создаете эмулятор, вам необходимо обратить внимание на следующие проблемы:

Во-первых, обратите внимание, что вы не должны использовать эмулятор x86 - его сложно установить и он плохо поддерживается.

Затем, система сборки для эмулятора собирает 32-битную и 64-битную версии эмулятора. Поскольку эмулятор зависит от OpenGL, это означает, что в вашей системе должны быть установлены как 32-битные, так и 64-битные версии библиотек OpenGL. См. Обсуждение в ошибка 897727 .

Есть два способа решения этой проблемы:

Решение 1: установить как 32-битные, так и 64-битные библиотеки OpenGL, с правильными символическими ссылками

Если ваш дистрибутив linux имеет мультибиблиотечные пакеты для Библиотеки OpenGL, вы можете попытаться установить их. Возможно, вам придется вручную создать несколько символических ссылок.

Например, вот ситуация на Ubuntu 12.04 LTS x86-64. В этом дистрибутиве пакет libgl1-mesa-dev нельзя установить одновременно в версиях x86-64 и i386, но вы можете одновременно установить следующую комбинацию пакетов:

sudo apt-get install libgl1-mesa-dev libglapi-mesa:i386 libgl1-mesa-glx:i386

После выполнения этой команды вам все равно придется вручную создать несколько символических ссылок для успешной сборки эмулятора:

 sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
 sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Решение 2: просто исправьте эмулятор, чтобы он собирал только 64-битные

Просто примените этот патч в хранилище sdk / git в репозитории B2G. Это приведет к тому, что эмулятор B2G будет пытаться создать 64-битный эмулятор только в том случае, если вы работаете в 64-битной системе, что позволит избежать проблем с несколькими библиотеками. 32-битный эмулятор все равно не используется в 64-битной системе. Это самое простое решение ... до тех пор, пока этот патч не сгорит.

Установка 64-битных требований

Установка зависимостей

sudo dpkg --add-architecture i386
sudo apt-get update

По завершении этого вы можете установить необходимые пакеты:

sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip cmake libxml2-utils

Установить adb

Процесс сборки должен извлечь двоичные двоичные объекты из установки Android на телефоне перед сборкой B2G (если, конечно, вы не создаете эмулятор). Для этого вам понадобится adb, Android Debug Bridge.

Вы можете скачать и установить adb как часть пакета Android SDK, для Mac, Linux или Windows - посетите страницу Получить Android SDK.

Более новые дистрибутивы Linux уже имеют adb в своих репозиториях. Для Ubuntu 12.10 и более поздних версий выполните следующую команду:

sudo apt-get install android-tools-adb

Install heimdall

Heimdall - это утилита для прошивки Samsung Galaxy S2. Он используется утилитой Boot to Gecko flash для замены содержимого телефона на ОС Firefox, а также для прошивки на устройство обновленных версий B2G и Gaia. Он понадобится вам, если вы хотите установить Firefox OS на Galaxy S2; это не нужно для любого другого устройства. Для других устройств мы собираем и используем утилиту fastboot.

Примечание: опять же, важно отметить, что это требуется только для установки Firefox OS на Samsung Galaxy S2.

Есть два способа установить heimdall:

  • Вы можете скачать код GitHub и собрать его самостоятельно.
    • Используйте менеджер пакетов для его установки.
    • В Linux: sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev

Конфигурировать ccache

Процесс сборки B2G использует ccache. Размер кэша по умолчанию для ccache составляет 1 ГБ, но сборка B2G легко насытит это; около 3 ГБ рекомендуется. Вы можете настроить кэш, выполнив следующую команду в терминале:

ccache --max-size 3GB

Для Linux: настройте правило udev для вашего телефона

Примечание. Этот раздел относится только к Linux; Mac OSX уже настроил необходимые разрешения для устройства.

Далее вам нужно настроить правило udev для вашего телефона,

Вы можете получить идентификатор поставщика USB, запустив lsusb при подключенном телефоне, но обычно это Google 18d1, Samsung 04e8, ZTE 19d2, Geeksphone / Qualcomm 05c6. Добавьте эту строку в ваш файл /etc/udev/rules.d/android.rules (заменив XXXX на идентификатор вашего устройства):

SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"

Например, ZTE, содержание в android.rules будет

SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"
]

Если файл не существует, создайте его. По умолчанию каталог rules.d доступен только для чтения, поэтому вам может понадобиться использовать chmod, чтобы сделать каталог доступным для записи, или файл, или оба.

После того, как вы сохранили файл и закрыли его, сделайте файл читабельным:

sudo chmod a+r /etc/udev/rules.d/android.rules

Теперь, когда правила udev были обновлены, перезапустите демон udev. Для Ubuntu:

sudo service udev restart

Наконец, отключите USB-кабель и отсоедините его, но не подключайте его снова, потому что сначала нам нужно включить удаленную отладку на телефоне.

Включить удаленную отладку

Прежде чем снова подключить телефон к USB-порту, установите его в режим USB-разработчика. Это позволяет отлаживать и прошивать телефон. Чтобы включить режим разработчика, выберите в своем телефоне Settings app -> Device information -> More Information -> Developer -> Remote debugging (в предыдущих версиях это называлось режимом разработчика). После того, как опция включена, удаленная отладка включена, и вы готовы к работе.

На этом этапе подключите телефон к компьютеру с помощью USB-кабеля (если вы ранее создали правило udev, это приведет к тому, что udev обнаружит телефон и создаст узел устройства с нужными разрешениями). Теперь вы можете проверить, можете ли вы перечислить ваше устройство с помощью команды adb devices. Если все работает нормально, вы должны увидеть вывод, похожий на этот (следующее для Geeksphone Keon):

adb devices
List of devices attached
full_keon       device

Если устройство не выдает список, как ожидалось, проверьте имя файла и сценарий: все правильно (см. предыдущий раздел), затем перезагрузите компьютер и еще раз введите команду. Также обратите внимание, что если ваше устройство использует fastboot, загрузчик может идентифицировать себя с другим идентификатором поставщика, чем тот, который вы видите, когда устройство загружается нормально.

Резервное копирование системного раздела телефона

Примечание. Это необходимо сделать перед сборкой устройства, если у вас нет резервной копии системы. Потому что на некоторые библиотеки будут ссылаться во время сборки. Эта библиотека может быть проприетарной, поэтому мы не можем предоставить ее в нашей базе кода.

Рекомендуется создать резервную копию всего системного раздела Android на вашем телефоне.

Вы можете использовать эту копию двоичных двоичных объектов для Android на случай, если впоследствии вы удалите дерево B2G. Для этого выполните:

adb pull /system <backup target dir>/system

В зависимости от телефона вам также может потребоваться извлечь каталоги / data и / или / vendor:

adb pull /data <backup target dir>/data
adb pull /vendor <backup target dir>/vendor

Если команды извлечения не выполняются с сообщением «Недостаточно прав» попробуйте следующее:

  • остановите и перезапустите сервер adb, или, если это не получится,
  • перепроверьте, что вы предоставили root-права для ' Инструмент adb »в вашем пользовательском ПЗУ (например, в CyanogenMod измените« Настройки -> Система -> Параметры разработчика -> Root Access »на« Приложения и ADB »или« Только ADB »).
  • Убедитесь, что вы правильно установили правило udev (см. Для Linux: настройте правило udev для своего телефона .

Перейдите к следующему шагу

К этому моменту вы должны быть готовы получить код Firefox OS!

источник

0
ответ дан 18 December 2013 в 22:26

Другие вопросы по тегам:

Похожие вопросы: