Вы должны иметь возможность связывать их, если они используют один и тот же формат объектного файла и нацелены на один и тот же набор машинных инструкций. Например, скажем, у вас есть два компилятора C, каждый со своими собственными расширениями собственного языка. Вы компилируете два разных файла, один с компилятором A, другой с компилятором B. Каждый исходный файл использует языковые расширения соответствующего компилятора. Пока оба компилятора настроены на одну и ту же платформу и архитектуру, например, набор команд i386 в Linux, вы сможете связать файлы в один исполняемый файл.
См. Этот список форматов объектных файлов в вики .
Это также может вас заинтересовать:
Инструменты UNIX для исследования объектных файлов
EDIT
Согласно этой статье, " Стандартная библиотека C ++ ABI ", существует отраслевой стандарт ABI C ++, и вы должны иметь возможность связывать файлы объектов любого компилятора, который соответствует этому стандарту. Вы можете увидеть этот стандарт здесь:
Itanium C ++ ABI
Этот документ был разработан совместно
неформальная отраслевая коалиция
состоящий из (в алфавитном порядке)
CodeSourcery, Compaq, EDG, HP, IBM,
Intel, Red Hat и SGI ...
В этом документе мы указываем
Двоичный интерфейс приложения для C ++
программы, то есть объектный код
интерфейсы между пользовательским кодом C ++ и
система, обеспечивающая реализацию и
библиотеки. Это включает в себя память
макет для объектов данных C ++, в том числе
как предопределенные, так и определяемые пользователем данные
типы, а также внутренний компилятор
сгенерированные объекты, такие как виртуальные
столы. Также включает в себя функцию
вызывающие интерфейсы, обработка исключений
интерфейсы, глобальное именование и различные
соглашения об объектном коде.
Таким образом, если вы нацелены на один и тот же набор инструкций, формат объектного файла и используете стандартный ABI C ++ (который теперь используется по умолчанию в gcc / g ++), все должно быть в порядке, если, конечно, стандартный ABI C ++ на самом деле стандартный и должным образом реализован большинством современных компиляторов C ++, работающих в Linux (которая, кажется, является платформой, на которую вы нацелены).
РЕДАКТИРОВАТЬ 2
Вы должны взглянуть на этот пост:
GCC против компилятора MS C ++ для поддержки обратной двоичной совместимости API
Похоже, что Microsoft не придерживается какого-либо непротиворечивого стандарта (Itanium или иным образом) в отношении их C ++ ABI, поэтому, если вы скомпилируете gcc для Windows, это, вероятно, будет проблемой.
Вы, вероятно, также хотите посмотреть на эти две статьи:
Политики / Проблемы двоичной совместимости с C ++
Некоторые мысли о бинарной совместимости
Вы можете ограничить своих пользователей компиляторами, которые поддерживают Itanium ABI, но это зависит от вашей целевой аудитории.