установить 64-битную версию glib2 в 32-битной системе для кросс-компиляции - PullRequest
3 голосов
/ 30 марта 2010

Я пытаюсь кросс-компилировать 64-битный исполняемый файл в 32-битной системе Ubuntu. Это работает до связывания, где происходит сбой из-за отсутствия 64-битного glib2 (libglib-2.0.a).

Если бы я делал это в 64-битной системе, я бы использовал getlibs для установки 32-битного glib2 в / usr / lib32. Однако на 32-битной машине getlibs, похоже, не делает наоборот - установите 64-битный glib2 в /usr/lib64.

Мой вопрос: как мне вручную сделать то, что должен делать getlibs, то есть установить 64-битный glib2 в / usr / lib64?

1 Ответ

0 голосов
/ 23 марта 2011

Есть несколько способов сделать это. Самое простое - скачать набор инструментов, который поставляется с нужными целевыми библиотеками. Учитывая, что это, скорее всего, не произойдет, вот один из способов решения этой проблемы.

Я собираюсь предположить, что вы используете gcc в качестве кросс-компилятора.

  1. Скопируйте все библиотеки, которые вам нужны из целевой системы, в какую-нибудь папку
  2. В вашем Makefile (или командной строке) установите CFLAGS (и CXXFLAGS, если C ++) следующее:

    -L / path / to / target / libs -Wl, -rpath-link / same / path / as / first

Обратите внимание, что -Wl и -rpath-link не имеют пробел между ними, это должно быть так.

-L добавляет путь к библиотеке для просмотра компилятором. Второй аргумент, -Wl, -rpath-link добавляет путь для компоновщика. Вы должны иметь и то и другое, иначе компилятор разрешит символы, но компоновщик скулит, что у него нет библиотеки для ссылки.

...