![]() |
|
Модераторы: xvr |
![]()
|
|
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Доброе время суток.
Есть программа на C++, написанная изначально с обширным использованием WinAPI (потоки, мьютексы, получение информации о железе...) - нужно её портировать под Linux, FreeBSD (*BSD), Solaris, MacOS, Minix... Насколько я знаю, все эти ОС-ы являются продолжениями Unix'а. Будет ли программа компилироваться под этими ОС-и, если портировать под Unix? Где можно найти полный "API-reference" по Unix? (желательно для "мигрирущующих" с Windows'а). P.S. портирование подразумевается прямо в коде с использованием #ifdef/#else/#endif..., а не подключением библиотек, абстрагирующих ОС (posix thread's под Windows, например). Это сообщение отредактировал(а) KaraKum - 10.1.2011, 20:17 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
только тот код, который не использует WinAPI. man + google
сочувствую большинство WinAPI можете найти в wine-dev. такой способ тоже работает. |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Это очевидно. Бросаю кость для поиска средств получения информации о железе.
В *nix'е должны использоваться её родные средства - так будто программа была написана для этой ОС (так и есть, но по воле случая первым попался под-руку именно Windows). |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 1 Всего: 49 |
Под все сразу? Если всерьез, то вариантов два. Если программа непосредственно и всерьез не связана с железом, то сначала аккуратно переписать все под Windows, избавившись от прямой работы с API. Если связана и от использования API никуда не деться - писать ее функциональный аналог заново, не трогая старый код. Оба варианта почти наверняка обойдутся дешевле, чем попытка переноса "в лоб". |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
значит переписать полностью, используя кросс-либы. иных(здравых) вариантов нет. |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Там кусочками - например такое место: идёт общение клиента с сервером посредством кроссплатформенной библиотеки (ENet) и в один "прекрасный" момент клиент должен передать информацию о своей сетевой карте (MAC-адрес, имя...) и о процессоре (cpuid()) - в Windows'е это где-то 100-150 строк обособленного кода (в конце имеется std::string для каждого этого данного - поэтому такое без проблем можно обернуть в #ifdef/#elif/#endif..., но вот в unix programming reference о железе вообще ничего нету
P.S. вот потоки есть (POSIX threads) - это, вроде как, стандарт - с этим проблем не должно возникнуть во всех Unix-подобных ОС. Добавлено через 35 секунд
Откуда такое умозаключение? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
изначально отсюда: т.к. я подумал что программа содержит тысячи строк вендового кода. но, как стало известно позже, вам требуются: cpuid + опции_сети + потоки. тогда не понятно, почему тема тут? в гугле есть абсолютно все. зы от скуки наверное. |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
про железо в Unix'е ничего нет. тогда странно что нет ответа вот с такой ссылкой Это сообщение отредактировал(а) KaraKum - 10.1.2011, 14:11 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
cpuid: http://www.google.ru/#hl=ru&expIds=172...4db31426aee1aa2
mac address: http://www.google.ru/#hl=ru&expIds=172...4db31426aee1aa2 остальное оффтоп. |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Вот информацию о процессорах получить неизвестно как. cpuid() для этого может быть недостаточно - эта команда возвращает только информацию о том процессоре, на котором эта команда вызывается, а на некоторых системах может быть больше одного процессора.
В Unix-спецификации такого что-то нет, хотя должно же быть - Unix ведь как-то определяет сколько процессоров есть в система (чтобы распределять потоки). |
|||
|
||||
| panter |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 10.1.2011 Где: Санкт-Петербург Репутация: нет Всего: нет |
cat /proc/cpuinfo и парсить вывод.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
ну хз.. точнее может MAKCim сказать.
|
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
А как можно напрямую воспользоваться теми же средствами, которыми был сформирован этот файл? Это сообщение отредактировал(а) KaraKum - 10.1.2011, 14:40 |
|||
|
||||
| panter |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 10.1.2011 Где: Санкт-Петербург Репутация: нет Всего: нет |
||||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: нет Всего: 1 |
Спасибо за ответ и прямую ссылку! Нужна информация по всем процессорам в системе. cpuid возвращает информацию только о том процессоре, на котором эта команда была вызвана, а нужна информация (тактовая частота) по всем процессорам в системе (это может быть многопроцессорный сервер или, например, два процессора на одной мат. плате). |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |