пʼятницю, 29 січня 2010 р.

Особливості компіляції під Леопардом

Вже другий тиждень боркаюся зі встановленням Gbrowse на старий сервер з двома процесорами G5 і Леопардом. По-перше, за умовчанням архітектура є ppc, але Apache використовує ppc64. Навіть якщо встановити PATH=/usr/local/lib:/usr/lib, деякі пакети (наприклад jpeg-7 та GD) під час встановлення лізуть до /usr/lib, а потім обурюються, що не та версія або не така архітектура. Щоб їх одурити, мав терміново замінити /usr/lib/libiconv.2.dylib та /usr/lib/libiconv.la символичними посиланнями на відповідні бібліотеки у /usr/local/lib.

Почав робити універсальні об'єкти під ppc та ppc64, але деякі пакети відмовились компілюватись. Наприклад, pkg-config та glibc щось там плели про несумісність прапорців -M з подвійним прапорцем -arch. Знайшов інструкцію для libtiff на http://www.kyngchaos.com/macosx:build:libtiff . Після кількох тестів, виявив, що решта пакунків теж компілюються з прапорцем --disable-dependency-tracking .

Дерево (перелік) залежностей можна знати на http://ifeghali.blogspot.com/2008/03/compiling-gtk-on-mac-os-x-105-leopard.html .

Моя рекомендація: використовуйте fink або darwinports і не морочте голови.

PS Містика. Спробував перекомпілювати libiconv і прапорець --disable-dependency-tracking вже не допомогав. Врешті решт, спрацювало ось що.

export ARCHFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64"
CFLAGS="$ARCHFLAGS -pipe" \
CCFLAGS="$ARCHFLAGS -Os -pipe" \
CXXFLAGS="$ARCHFLAGS -Os -pipe" \
LDFLAGS="$ARCHFLAGS -bind_at_load" \
./configure --enable-static

Проте різниці я не бачу взагалі.

PPS Конфігурацію для glib треба робити під root. Інакше вилазить така помилка:
configure: error:
*** GLib requires a 64 bit type. You might want to consider
*** using the GNU C compiler.

Немає коментарів:

Дописати коментар