thedeemon: (Default)
[personal profile] thedeemon
Понадобилось мне собрать кое-какой код на С++ под Макось, с которой никогда раньше дело не имел. Мака у меня нет, нашел образ для VMWare - Mac OS X 10.5.5 (т.е. простой леопард, не снежный). Кое-как поставил туда XCode, он сам не запускается (тихо падает), но gcc работает (версия 4.0.1). Как я понял, по умолчанию он делает 32-битные бинарники. Может сделать 64-битный, но таковой у меня не запускается. Скриншот всех параметров здесь.

Вопросы:
1. Почему 32 бита? 10.5 - не 64-битная ОСь? Или это у меня такой образ странный? Или это из-за запуска в VMWare?
2. Насколько текущая версия OSX (10.6?) отличается от 10.5? Если я соберу в имеющейся конфигурации, будет ли это дело запускаться и работать в 10.6? Нужно ли делать оба варианта - 32 и 64 бита?
3. В итоге мне нужно собрать библиотеку, которую заказчик сможет вызывать из своего кода (динамическую или статическую - не важно). В винде это была DLL. Как это правильно сделать в OS X?

Date: 2010-02-18 02:18 pm (UTC)
From: [identity profile] stepancheg.livejournal.com
1. Как в современной ОС, любой процесс может работать как в 32-битном, так и в 64-битном режиме. В Leopard большинство процессов работают в 32-битном режиме. В Snow Leopard по умолчанию — в 64-битном, но ты свои программы можешь делать для любого режима.

2. Средне отличается :) Программа, собранная на 10.5 будет работать на 10.6. 64-битный режим делать необязательно. 32-битный — обязательно, т. к., старые Mac mini на Intel Core Solo не умели работать в 64-битном режиме (могу ошибаться).

3. gcc -shared -o lib.dylib ./size.c

По-хорошему, надо сделать universal библиотеку (две архитектуры в одном файле). Ни разу не пробовал.


Почему у тебя не работает программа в 64-битном режиме, я не знаю. У меня обычный Leopard на MacBook Pro, скомпилировал с -m64, всё работает честно в 64-битном режиме.

Date: 2010-02-18 02:24 pm (UTC)
From: [identity profile] stepancheg.livejournal.com
Забыл сказать: на Leopard многие библиотеки (типа Cocoa) не скомпилированы для 64-битного режима. libc работает в обоих.

Date: 2010-02-18 02:52 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Ну, мне библиотек нужно по минимуму, stdio.h и math.h хватит.

Date: 2010-02-18 02:30 pm (UTC)
From: [identity profile] nealar.livejournal.com
2. GHC, тем не менее, для 10.6 нет. Хотя, якобы, 10.6 - это только улучшенная 10.5, то есть, API должны совпадать и не слишком кривой код должен работать без изменений.

Date: 2010-02-18 02:47 pm (UTC)
From: [identity profile] stepancheg.livejournal.com
Так это всегда бывает, что какие-то вещи не работают при переходе на новую версию.

Date: 2010-02-18 02:47 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Спасибо!

Date: 2010-02-18 02:50 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Куда-то пропал ответ от еще одного маковода, но в почте копия осталась.
Ему тоже спасибо. На ADC уже зарегистрировался, без этого не давали XCode скачать.

Profile

thedeemon: (Default)
Dmitry Popov

February 2026

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 7th, 2026 11:42 pm
Powered by Dreamwidth Studios