2009-09-19 3 views
3

После обновления до Snow Leopard я больше не могу запускать проект Eclipse CDT на своем компьютере. Хотя процесс сборки завершается без какой-либо ошибки, Eclipse не распознает созданный им двоичный файл. При попытке указать на двоичный файл в файле Запустить конфигурацию .. диалог, он не может найти ни одного бинарного файла в проекте. Хотя выполнение файла из терминала работает нормально.Eclipse CDT на Snow Leopard не может найти двоичные файлы

В соответствии с a post на форуме Eclipse это может быть проблемой, когда парсер Mach-O не распознает 64-битные двоичные файлы. Кто-нибудь знает, какие решения или обходные пути проблемы, чтобы я мог запускать/отлаживать мои проекты на C++ на Snow Leopard.

ОБНОВЛЕНО

Решение было предложено Shane, хотя позволяет бинарный созданный, чтобы быть признанным, действительно вводит еще одну проблему. Так как системные библиотеки Snow Leopard - все 64 бита, более невозможно связать код, созданный с помощью -arch i386, с этими библиотеками и, следовательно, еще не выполнимое решение.

+0

Вам нужно включить правильный двоичный синтаксический анализатор для затмения, чтобы его распознать.Исправьте меня, если я ошибаюсь, но нет разницы между 64-битными двоичными файлами и 32-битными двоичными файлами с точки зрения разбора. Коды операций по-прежнему одинаковы, не так ли? Просто эти слова не являются 64-битными, а не 32. – ldog

+0

Последствием этого обходного пути, компилирующегося как 32-битные двоичные файлы, является то, что мой код больше не может связываться с библиотеками MacPorts, которые скомпилированы как 64-разрядные. Существуют ли другие возможные решения, например. возможно ли изменить бинарный синтаксический анализатор на что-то еще, что поддерживает разбор 64-битных двоичных файлов? – ejel

ответ

3

Согласно сообщению, на которое вы ссылаетесь, вам нужно добавить -arch i386 в настройки компилятора и компоновщика для проекта. Затем, когда вы перестраиваете проект, CDT подбирает исполняемые файлы.

Свойства проекта -> C/C++ Build -> Настройки. Затем в компиляторе и компоновщике Разные разделы добавляют флаг в другие флаги.

Приветствия,

+1

Предложение делает трюк. Раньше я добавлял флаг -arch i386 в компилятор, не понимая, что компоновщик также играет роль тоже. – ejel

+0

Извините за ранее принятый ответ и забрал его обратно. Я понял, что решение на самом деле не работает из-за проблемы связи с системными библиотеками, которые имеют 64 бита. См. Мой обновленный вопрос. – ejel

1

gmatt,

В 64 двоичные файлы различны, как новая архитектура имеет новый регистры общего назначения, а также. В архитектурах также больше различий, которые влияют на коды операций, которые вы увидите в двоичном формате.

Приветствия, Шейн

2

Как двоичный парсер для Eclipse не был обновлен, чтобы признали новую 64-битную Mach-O двоичный формат (https://bugs.eclipse.org/bugs/show_bug.cgi?id=270790), это выглядит как единственный обходной путь сейчас для компиляции кода в 32- бит.

В результате невозможно связать проект C/C++ с любыми системными библиотеками, поскольку большинство из них уже скомпилировано как 64-разрядное.

Мое решение на данный момент временное переключение на XCode.

+0

Теперь вы можете найти исправление, исправляющее эту проблему в приведенной выше ссылке. – ejel

1

Новый бит 64-битного парсера Mach, наконец, был выпущен.

Я только что сделал обновление в Eclipse и в свойствах проекта выбрал новый двоичный синтаксический анализатор. Я могу, наконец, запустить мои C++-файлы из Eclipse, но по-прежнему я по-прежнему борюсь с отладкой.

0

Как я уже знал, двоичный синтаксический анализатор находится [Свойства проекта -> C/C++ Build -> Настройки], как сказано выше. но я думаю, что это изменилось.

Я мог бы нашел бинарные парсер через этот путь: [затмение -> Среда -> C/C++ -> Мастер нового C/C++ Project -> Makefile проект -> Бинарных парсеры -> маш-O анализатор (устар)]

Смежные вопросы