VslavX 0 28 октября, 2005 Опубликовано 28 октября, 2005 · Жалоба Сейчас работаю с ARM кросс-компиляторами IAR (4.11) и GCC (самосбор 3.2). Работаю, возможно, несколько извращенно - MS VC++ 6.0 в качестве среды. (для Windows тоже много писать приходится) К проекту прикручивается makefile который собственно билдает, тулзы программирования и мониторинга и проч. Матюки кросс-компиляторов пропускаются через perl-скрипты и выдаются в VC в стиле "аля MS". Поэтому навигация по ошибкам пашет на ура. А теперь мне вот еще очень source-browse захотелось - очень уж с ним классно в чужих сырцах разбираться. Ну взял я MS EVC++ 4.0. Все выглядит привычно, но вот никак не получается у меня MS линкер уговорить разместить код с адреса 0. Заточено оно под WinCE/Win32, а там эта область - железное табу (NULL pointer area). В-общем-то, можно и не линковать - другой компилятор использовать, а MS только для построения bsc-файла запускать. Но я так посмотрел - у MS ARM компилер тоже неплохой, так что линкер таки тоже желательно уговорить. Кто-нибудь такую проблему уже решал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 31 октября, 2005 Опубликовано 31 октября, 2005 · Жалоба Проблема не в том, чтобы код слинковать с нулевого адреса (адреса в программе все относительные), проблема в задании адреса для сегмента данных. Тут два варианта - использование не MS линкера (ld, например) или применить релокатор, который выдернет информацию из exe-файла и перекинет данные по нужным адресам. Да, и не поделишься информацией, как тебе удалось в eVC++ проекте запускать makefile? Там такой возможности по умолчанию вроде как нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 31 октября, 2005 Опубликовано 31 октября, 2005 · Жалоба Проблема не в том, чтобы код слинковать с нулевого адреса (адреса в программе все относительные), проблема в задании адреса для сегмента данных. Тут два варианта - использование не MS линкера (ld, например) или применить релокатор, который выдернет информацию из exe-файла и перекинет данные по нужным адресам. Действительно, релокатор написать - не проблема, формат PE хорошо документирован, тем более приходилось уже писать релокаторы (для MZ-exe). Дык, лень же :) - после великолепных универсальных линкеров xlink и ld. Если никто более приличного не посоветует, возможно-таки и напишу релокатор. Да, и не поделишься информацией, как тебе удалось в eVC++ проекте запускать makefile? Там такой возможности по умолчанию вроде как нет. А я в eVC makefile не прикручивал. Я прикрутил его в обычный VC :). А в eVC пока makefile был без надобности - линкер вот уговариваю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 31 октября, 2005 Опубликовано 31 октября, 2005 · Жалоба Да, но VC 6.0 не понимает bsc файл, который генерит ARM evC++ компилятор! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 31 октября, 2005 Опубликовано 31 октября, 2005 · Жалоба Да, но VC 6.0 не понимает bsc файл, который генерит ARM evC++ компилятор! <{POST_SNAPBACK}> Жаль, это был один из вариантов, который я собирался пробовать. А может быть можно cod файлы скормить штатному bscmake из VC6? Чтобы не было неясностей, изложу ситуацию подробней: - сейчас работаю VC6 + makefile + кросс-компилятор + perl-фильтры - поставил eVC, скомпилил проект по умолчанию - проблемы с линкером - _отдельно_ от eVC написал makefile (запускаю nmake из Far-а) из которого вызываю строчные тулзы от eVC. Согласитесь - VC/eVC не самая лучшая среда для отладки makefile :) Командная строчка удобней. Вот на этом этапе я и подзадержался :( - надо "уговорить линкер" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 17 ноября, 2005 Опубликовано 17 ноября, 2005 · Жалоба В догонку. Я тут погорячился насчет bsc ARM evc++ в VC. Все нормально понимается, сам раньше неправильно ключи компилятора установил. Прошу прощения за дезу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться