Arm1.ru

Tag: «mac os x»

Проблемы компиляции C++-приложений у Homebrew в OS X 10.9 Mavericks

Есть проблема с Homebrew в OS X 10.9 Mavericks - некоторые пакеты не компилятся из исходных кодов. Касается это программ, написанных на C++. Вчера пришлось потратить некоторое количество времени на её решение.

Судя по гуглению, проблема касается только тех, кто обновлялся в 10.8 на 10.9. У тех, кто ставил систему с нуля - вроде бы всё хорошо.

Вчера получил вот такое:

 $ brew update
Updated Homebrew from f949b212 to 9d10c43e.
==> Updated Formulae
gfortran
$ brew install spidermonkey
==> Downloading http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
Already downloaded: /Library/Caches/Homebrew/spidermonkey-1.8.5.tar.gz
==> ../js/src/configure --prefix=/usr/local/Cellar/spidermonkey/1.8.5 --enable-readline --enable-threadsafe --with-system-nspr --enable-macos-target=10.9
==> make
==> make install
Error: spidermonkey dependency readline was built with the following
C++ standard library: libstdc++ (from clang)

This is incompatible with the standard library being used
to build spidermonkey: libc++ (from clang)

Please reinstall readline using a compatible compiler.
hint: Check https://github.com/mxcl/homebrew/wiki/C++-Standard-Libraries

Погуглив и потыкавшись в issues на github'е, пошёл по ссылке, которая в консоли была в последней строчке. Там было:

Есть две стандартные C++ библиотеки, которые поддерживают компиляторы Apple.

По умолчанию в 10.8 и более ранних использовалась libstdc++, она поддерживалась компиляторами Apple GCC, GNU GCC и clang.

В 10.9 по умолчанию используется libc++, она же по умолчанию в clang на более старых платформах при билдинге кода C++11.

Существуют некоторые несовместимости между несколькими стандартными C++ библиотеками, поэтому Homebrew отбраковывает установку софта если его зависимость была собрана с несовместимой C++ библиотекой. Он рекомендует вам собирать дерево зависимостей используя совместимый компилятор.

Если вы обновились до 10.9 с более ранней версии - потому, что по умолчанию теперь как C++ библиотека используется libc++, возможно вы не сможете собрать из исходных кодов программы, чьи зависимости были собраны в 10.8 или более ранних. Если вы читаете это потому, что были направлены сюда ошибкой компиляции, вы можете исправить всё переустановив зависимости пакета, который вы пытаетесь собрать.

Вот, собственно, и решение проблемы. Если вы ставите какой-то пакет (в данном случае spidermonkey) и видите ошибку вроде:

Error: spidermonkey dependency readline was built with the following
C++ standard library: libstdc++ (from clang)

то нужно просто переустановить зависимость, на которую ругается компилятор. В данном случае readline. Просто выполнив команду:

brew reinstall -v readline

После того, как зависимость будет пересобрана - сам пакет установится.

Собственно, я с этим столкнулся, когда пытался установить новую версию CouchDB. Она тянет за собой spidermonkey, которая тянет за собой readline. Обе зависимости пришлось просто переустановить. 

Надеюсь заметка кому-нибудь сэкономит время.

comment comments

Как обновить хакинтош с Mac OS X Mountain Lion до Mavericks

 Hackintosh Mac OS X Mavericks

Обновил сегодня рабочий хакинтош до 10.9. Всё довольно странно, но реализуемо.

До этого стояла 10.8.5 Mountain Lion. Через Mac App Store скачал обновление Mavericks. Запустил - установщик попросил перезагрузку. После перезагрузки ничего не произошло - просто загрузилась Mountain Lion снова.

Для установки обновления нужно следующее:

Читать далее...

comment comments

Создание ssh-алиасов для терминала в Mac OS X

Шпаргалка.

Всё то же самое, что и в Linux, только в макоси нет команды ssh-copy-id. Чтобы она пявилась:

brew install ssh-copy-id

Дальше всё как в Linux'е:

Чтобы коннектиться к хосту 192.168.1.2 не через ssh root@192.168.1.2, а ssh myhost делаем следующее:

Создаем файл ~/.ssh/config, а в нем пишем:

Host myhost
HostName 192.168.1.2
User root
Port 22

Далее, чтобы не вводить каждый раз заново пароль, генерируем наши ключи

ssh-keygen -t rsa

И копируем публичный ключ на сервер

ssh-copy-id myhost

Обновление ключей:

ssh-add ~/.ssh/id_rsa

 

 

comment comments

Потоковое вещание звука на Mac OS X

 

Так получилось, что в моей комнате колонки находятся в одной части, а комьютер в другой. Провод от колонок тянуть не представляется разумным. Итак - имеются колонки, wi-fi, а также мобильное устройство с wi-fi (в моём случае iPad, но может подойти всё что угодно, что умеет играть по wi-fi музыку). Вспомнил, что есть замечательная программа Nicecast - с её помощью можно организовать в 1 клик онлайн-вещание. Суть в том, чтобы оставаться за своим рабочим местом и рулить музыкой за ним, но играла она в колонках на другой стороне. Кому-то покажется, что проще провод протянуть, но... Fuck yeah, почему бы не заморочиться?

Читать далее...

comment comments