Должен ли Eclipse иметь дело с проблемами совместимости C ++ ABI? - PullRequest
1 голос
/ 06 января 2012

Проект Eclipse предлагает установщики для Linux .Содержат ли эти установщики (или установленные исполняемые файлы) какой-либо скомпилированный код C ++?Если да, то как Eclipse избегает проблем совместимости C ++ ABI?

Я подумал, что нативные библиотеки для Eclipse (например, SWT ) должны быть все написаны на C. (Давайте пока проигнорируем Windows.Просматривая исходный код SWT, я заметил, что код XPCOM написан на C ++.

Так в чем же подвох?Если я установлю Eclipse из установщика, получу ли я это?Если да, будет ли он работать независимо от того, какая среда выполнения C ++ установлена ​​на моей машине?Если да, то как «они» это делают?

(Чтобы превентивно обратиться к галерее арахиса: я понимаю, что могу просто использовать менеджер пакетов для установки Eclipse. Я спрашиваю о случае, когда программа не 'специально для моей машины.)

Я заметил, что в FAQ по SWT объясняется : «SWT использует JNI для взаимодействия с собственными виджетами в операционной системе. Библиотеки SWT JNI должны быть скомпилированыдля оконной системы, операционной системы и архитектуры аппаратного обеспечения, представляющих интерес. "

Это заставляет меня задуматься:" Тогда как же Eclipse может создать универсальный установщик для Linux? "(Возможно, если бы я просто попытался использовать один из этих инсталляторов, все стало бы понятно. Но иногда лучше просто спросить ваших игроков.)

Я пытаюсь понять, как проекты Java, использующие JNI, работают с C ++Проблемы совместимости ABI.Я задал похожий вопрос несколько дней назад, но пока мало что слышал ( Подвержены ли Java Native Interface (JNI) проблемам совместимости C ++ ABI? ).Я подумал, что эксперт по Eclipse мог бы дать мне некоторое руководство, поскольку Eclipse, возможно, придется иметь дело с подобными проблемами.

Просто чтобы прояснить: кажется, что процессы Java в основном не могут использовать библиотеки C ++.Java-процессу требуется среда выполнения C ++.Если разделяемой библиотеке нужна несовместимая среда выполнения C ++ ... ну, вы, вероятно, уже поняли идею.

(Спасибо за чтение всего этого.)

1 Ответ

0 голосов
/ 06 января 2012

Я предполагаю, что когда они собирают его, они статически связывают стандартную библиотеку c ++ с приложением (или предоставляют свою собственную копию динамической библиотеки во время работы с установщиком). Тогда glibc является единственной другой динамической библиотекой, и с ней проще работать. с (хотя проблемы все еще связаны с ним).

Один из способов проверить это - установить пакет (в linux), затем запустить утилиту ldd для исполняемого файла и посмотреть, с чем он ссылается.

...