Не удалось запустить. Двоичный файл не найден. Проблема Snow Leopard и Eclipse C / C ++ IDE

Не вопрос, я просто рыскал по Интернету в поисках решения этой проблемы и подумал, что поделюсь им с хорошими людьми из SO. Проще говоря, чтобы было доступно новичкам. :) (Прошу прощения, если это не то место - просто пытаюсь быть полезным.)

Эта проблема возникает практически у любого пользователя OS X Snow Leopard, который пытается использовать Eclipse C / C ++ IDE, но особенно раздражает людей (таких как я), которые использовали Eclipse C / C ++ IDE в Leopard и не могли работать с Eclipse, когда они обновятся. Проблема возникает, когда пользователи переходят к сборке / компиляции / компоновке своего программного обеспечения. Они получают следующую ошибку:

Не удалось запустить. Двоичный файл не найден.

Далее, ветки «бинарные файлы» в окне проекта слева попросту не существует.

ПРОБЛЕМА: GCC 4.2 (сборник компиляторов GNU), поставляемый со Snow Leopard, по умолчанию компилирует двоичные файлы в 64-битном формате. К сожалению, компоновщик, который использует Eclipse, не понимает 64-битные двоичные файлы; он читает 32-битные двоичные файлы. Здесь могут быть и другие проблемы, но, короче говоря, они приводят к тому, что двоичный файл не создается, по крайней мере, тот, который Eclipse не может прочитать, что означает, что Eclipse не находит двоичные файлы. Отсюда и ошибка.

Одно из решений - добавить флаг -arch i686 при создании файла, но создание файла вручную каждый раз раздражает. К счастью для нас, Snow Leopard также поставляется с GCC 4.0, который по умолчанию компилируется в 32-битном формате. Итак, одно из решений - просто связать его как компилятор по умолчанию. Вот как я это сделал.

РЕШЕНИЕ: GCC находятся в / usr / bin, который обычно является скрытой папкой, поэтому вы не можете увидеть его в Finder, если вы явно не укажете системе, что хотите видеть скрытые папки. В любом случае, что вы хотите сделать, это перейти в папку / usr / bin и удалить путь, который связывает команду GCC с GCC 4.2, и добавить путь, который связывает команду GCC с GCC 4.0. Другими словами, когда вы или Eclipse пытаетесь получить доступ к GCC, мы хотим, чтобы команда перешла к компилятору, который по умолчанию строит 32 бита, чтобы компоновщик мог читать файлы; мы не хотим, чтобы он попал в компилятор, который компилируется в 64 бита.

Лучший способ сделать это - перейти в «Приложения / Утилиты» и выбрать приложение под названием «Терминал». Должна появиться текстовая подсказка. Он должен сказать что-то вроде «(Имя компьютера): ~ (Имя пользователя) $» (с пробелом для ввода пользователем в конце). Чтобы выполнить указанные выше задачи, введите следующие команды, вводя каждую из них в последовательности VERBATIM и нажимая Enter после каждой отдельной строки.

cd /usr/bin
rm cc gcc c++ g++
ln -s gcc-4.0 cc
ln -s gcc-4.0 gcc
ln -s c++-4.0 c++
ln -s g++-4.0 g++

Как и я, вы, вероятно, получите сообщение об ошибке, говорящее о том, что у вас нет разрешения на доступ к этим файлам. Если да, попробуйте вместо этого следующие команды:

cd /usr/bin
sudo rm cc gcc c++ g++
sudo ln -s gcc-4.0 cc
sudo ln -s gcc-4.0 gcc
sudo ln -s c++-4.0 c++
sudo ln -s g++-4.0 g++

Судо может запросить пароль. Если вы никогда раньше не использовали sudo, попробуйте просто нажать Enter. Если это не сработает, попробуйте ввести пароль для своей основной учетной записи администратора.

ДРУГИЕ ВОЗМОЖНЫЕ РЕШЕНИЯ Вы можете ввести переменные сборки в Eclipse. Я пробовал это, но я недостаточно знаю об этом. Если вы хотите прочувствовать это, вам, вероятно, понадобится флаг -arch i686. По правде говоря, GCC-4.0 работал у меня все это время, и я не вижу причин переходить на него сейчас. Возможно, есть способ изменить значение по умолчанию для самого компилятора, но, опять же, я недостаточно знаю об этом.

Надеюсь, это было полезно и информативно. Хорошая кодировка!


person Alex    schedule 03.11.2009    source источник
comment
О, еще одна вещь. Не забудьте записать свои ссылки, прежде чем менять их! Если вы не хотите изменять общесистемные настройки, добавьте каталог в PATH перед / usr / bin (скажем, $ HOME / bin) и сделайте там символические ссылки. Если вы хотите вернуться, вот код, который я бы использовал : cd / usr / bin sudo rm cc gcc c ++ g ++ sudo ln -s gcc-4.2 cc sudo ln -s gcc-4.2 gcc sudo ln -s c ++ - 4.2 c ++ sudo ln -s g ++ - 4.2 g ++ Вы захотите проверить ваш / usr / bin и найдите файл, похожий на gcc-4.x. Если это не 4.0 или 4.2, замените номера версий, указанные выше, на номер версии, который у вас есть.   -  person Alex    schedule 03.11.2009
comment
Вы должны указать это под своим вопросом.   -  person sbi    schedule 03.11.2009
comment
Сначала возникла эта проблема: stackoverflow.com/questions/1788043/, а потом сразу же столкнулся с этой проблемой . Спасибо за сообщение.   -  person Brent Writes Code    schedule 08.12.2009


Ответы (10)


только для записей, после 30 минут борьбы, я решил эту проблему на lion (mac 10.7), выбрав Mach-O 64 Parser и Elf ​​Parser в: Project Menu -> Properties-> C / c ++ Build-> Settings-> Binary Parsers вкладка (первая вкладка или третья вкладка в Eclipse версии: 3.7.2) [при прослушивании сладкого побега от Гвен Стефани лол].

person Viren    schedule 11.12.2011
comment
У меня была такая же проблема. Это исправило это для меня! Большое спасибо! - person Martin Tuskevicius; 29.01.2012
comment
Мне очень помогли решить мою проблему также под MacOS 10.9.2 Mavericks и Eclipse Version: 3.7.2. Спасибо! - person neowinston; 27.02.2014
comment
Есть ли способ оставить его выбранным для каждого проекта? Потому что это очень раздражает! - person Redauser; 01.11.2015
comment
Это оно. Согласитесь с комментарием выше, мне интересно, почему он не включен по умолчанию. Большое спасибо. - person Natan Streppel; 28.01.2016

Я получал то же сообщение о

Не удалось запустить. Двоичный файл не найден.

потому что я не понимал, что мне нужно, удерживая Ctrl, щелкнуть папку проекта и выбрать «Build Project». Это не обязательно делать в проектах Java в Eclipse, поэтому у других новичков, таких как я, может быть такая же проблема.

person Charlie    schedule 21.01.2012
comment
Здорово! : D хаха иногда не могу представить насколько очевидным было решение - person stratis; 03.10.2013
comment
Мне очень помогли MacOS 10.9.2 Mavericks и Eclipse Version: 3.7.2. Спасибо! - person neowinston; 27.02.2014

как уже упоминалось, это можно сделать, просто добавив необходимый флаг в eclipse.

для этого откройте окно свойств, затем перейдите в «c / c ++ build»> «settings». В древовидной структуре справа перейдите к разделу «Разное» для «MacOS X C Linker» и «GCC C compiler» и добавьте в текстовое поле с меткой ~ «flags»: «-arch i686»

person none    schedule 13.11.2009

Я использую Mac OSX 10.6.8, и в моем Eclipse была установлена ​​цепочка инструментов Cross GCC. Итак, я сделал это:

  1. В разделе «Свойства» проекта выберите «Сборка C / C ++ -> Редактор цепочки инструментов».
  2. Измените текущую цепочку инструментов с Cross GCC на MacOSX GCC.
  3. Я также изменил Current builder на CDT Internal Builder. (Я не уверен, что это имело значение.)
  4. Я оставил все в настройках в покое.
  5. Восстановить. Вы должны увидеть двоичный файл с тем же именем, что и ваш проект, в папке Debug вашего проекта.
person Evan McClure    schedule 17.07.2011

О, еще одна вещь. Не забудьте записать свои ссылки, прежде чем менять их! Если вы не хотите изменять общесистемные настройки, добавьте каталог в PATH перед / usr / bin (скажем, $ HOME / bin) и сделайте там символические ссылки. Если вы хотите вернуться, вот код, который я бы использовал :

cd /usr/bin
sudo rm cc gcc c++ g++
sudo ln -s gcc-4.2 cc
sudo ln -s gcc-4.2 gcc
sudo ln -s c++-4.2 c++
sudo ln -s g++-4.2 g++

Вы захотите проверить свой / usr / bin и найти файл типа «gcc-4.x». Если это не 4.0 или 4.2, замените номера версий, указанные выше, на номер версии, который у вас есть.

РЕДАКТИРОВАТЬ: О, у меня также есть проблемы с запуском 64-битного Carbon Eclipse, если я использую GCC-4.0. Однако 32-битный Carbon отлично работает.

person Alex    schedule 03.11.2009

У меня есть программа под названием gcc_select, у которой есть где-то файл prefs, и она позволит вам переключаться между несколькими версиями gcc ...

Я думаю, что получил от macports, но не уверен.

person Brian Postow    schedule 05.11.2009

"как уже упоминалось, это можно сделать, просто добавив необходимый флаг в eclipse.

для этого откройте окно свойств, затем перейдите в «c / c ++ build»> «settings». В древовидной структуре справа перейдите к разделу «Разное» для «MacOS X C Linker» и «GCC C compiler» и добавьте в текстовое поле с меткой ~ «flags»: «-arch i686» »

Обратите внимание, что, если вы пойдете по этому пути, вы можете легко проверить архитектуру своего процессора, вызвав команду

uname -p

в терминале Bash (например, Terminal.app) и изменив "-arch i686" на "-arch -i386".

person Priestbait    schedule 01.02.2011

Вместо этого перейдите в Проект -> Свойства; Выберите C / C ++ Build -> Settings; В разделе «Параметры инструмента» измените команды компилятора C ++ и компоновщика с g ++ на g ++ - 4.0. Если вы все еще получаете какие-либо ошибки, измените компилятор c также на gcc-4.0. Я также изменил настройки компилятора C на всякий случай. У меня все работает отлично.

person user400418    schedule 23.07.2010

Привет, я установил 32-разрядную версию Eclipse и до сих пор отлично работает на Mac Mountain lion. Я получал двоичный файл, который не был найден при компиляции, но теперь с 32-битным Eclipse проблем нет.

person uplearnedu.com    schedule 27.02.2013

Просто удалите папку «Debug» из вашего проекта, а затем запустите «Build project».

введите описание изображения здесь

person Serge Voloshenko    schedule 27.02.2016