Руководство по созданию 32- и 64-битных версий библиотеки (в Linux) - PullRequest
1 голос
/ 27 января 2012

У меня установлена ​​64-битная среда сборки в Ubuntu.Допустим, я загрузил исходный код какой-то библиотеки и хотел бы создать 32- и 64-разрядные версии с использованием одного исходного кода.

Библиотека поставляется со скриптом ./configure, поэтому кто-то может успешно настроить его для64-битная версия, подобная этой:

./configure --prefix=/opt/libtvzombie --with-opengl --with-other-option1

... и сборка и установка ее на /opt/libtvzombie следующим образом:

make
sudo make install
sudo sh -c 'echo /opt/libtvzombie/lib > /etc/ld.so.conf.d/tvzombie.conf'
sudo ldconfig

Вопросы:

  1. Как заставить средний скрипт ./configure компилироваться в 32-битном режиме на 64-битной системе?Я знаю, что могу использовать -m32 переключатель компиляции с g ++, но с autotools это не так, потому что ./configure распознает, что я компилирую в 64-битной среде.

  2. Гдемне нужно установить эту 32-битную версию в?Может быть /opt/libzombie32?

  3. Не возникнет ли конфликта имен между 32-битной и 64-битной версиями библиотеки с одинаковым именем?

Ответы [ 2 ]

4 голосов
/ 27 января 2012

Так как configure не знает, что флаг -m32 означает «32-битный» (в конце концов, это может означать что-то совершенно другое с другим компилятором - его даже можно отклонить, например, на ia64), вы должны также сказать емутип хоста.Тип хоста, если программа так закодирована, также может быть использован для выбора определенного поведения, независимого от CC и CFLAGS, всегда следует указывать --host =, если конфигурация, которую вы хотите запустить, не является автоопределенной.

./configure --host=i686-linux-gnu CFLAGS="-m32" LDFLAGS="-m32"
2 голосов
/ 27 января 2012

Если вы хотите установить в / opt / libzombie32, вам просто нужно указать --prefix = / opt / libzombie32 и указать -m32 в CFLAGS.Лично я считаю плохой идеей устанавливать отдельный каталог для каждого пакета, и вам лучше сделать что-то вроде:

$ sudo sh -c 'echo CFLAGS="$CFLAGS -m32" > /opt/lib32/share/config.site'

А затем настроить с помощью --prefix = / opt /lib32.Если указать CFLAGS в config.site, любой автоматически настроенный проект, настроенный с помощью --prefix = / opt / lib32, получит -m32, указанное в CFLAGS.Вы также можете указать CXXFLAGS для обработки C ++.

...