#rust #qnx
#Ржавчина #qnx
Вопрос:
кто-нибудь пытался скомпилировать код Rust для QNX? Я бы с удовольствием переключился с C на Rust, но должен поддерживать QNX.
Компиляция для Linux (та же архитектура) и попытка связать с компоновщиком QNX вызывает много проблем с компоновкой (не уверен, имеет ли это вообще какой-либо смысл):
undefined reference to `_Unwind_Backtrace'
undefined reference to `_Unwind_DeleteException'
undefined reference to `_Unwind_GetDataRelBase'
undefined reference to `_Unwind_GetIP'
undefined reference to `_Unwind_GetIPInfo'
undefined reference to `_Unwind_GetLanguageSpecificData'
undefined reference to `_Unwind_GetRegionStart'
undefined reference to `_Unwind_GetTextRelBase'
undefined reference to `_Unwind_RaiseException'
undefined reference to `_Unwind_Resume'
undefined reference to `_Unwind_SetGR'
undefined reference to `_Unwind_SetIP'
undefined reference to `__errno_location'
undefined reference to `__xpg_strerror_r'
undefined reference to `fstat64'
undefined reference to `memrchr'
undefined reference to `open64'
undefined reference to `pthread_getattr_np'
undefined reference to `sigaltstack'
undefined reference to `syscall'
undefined references to `_Unwind_Resume' follow
Возможно ли перенести rustc на QNX с помощью (довольно старого) компилятора C / C из QNX, или нам также нужно будет перенести LLVM, используемый rustc, на QNX?
Комментарии:
1. Вы пытались собрать весь стандартный файл? Вы убедились, что qnx libc правильно связан? Можете ли вы получить проект barebones no std для сборки?
2. Я попробовал несколько вариантов qcc для компоновки с libc (QNX предоставляет несколько вариантов). Я не компилировал stdlib ни из Rust, ни из QNX; какой из них вы имеете в виду (Rust или QNX)?
3. Я имею в виду rust — вы почти наверняка захотите использовать
build-std
функцию cargo для создания stdlib Rust для qnx. Кроме того, простого использования libcore liballoc libc, вероятно, будет достаточно, если вы не можете получить полный стандартный каталог для сборки.4. Мне удалось скомпилировать rust для Linux с помощью
x.py
(просто чтобы убедиться, что у меня есть все необходимые инструменты). Теперь я не уверен, как поступить. Любое предложение, например, где обратиться за помощью или есть руководство по портированию компилятора (которое я не смог найти)? (Я имею в виду помимо ссылки, которую вы уже предоставили: спасибо!)5. Вам не нужно создавать весь набор инструментов — достаточно просто создать стандартную библиотеку для цели QNX. По этой ссылке есть инструкции о том, как создать пользовательскую цель и создать стандартную библиотеку с помощью cargo (требуется nightly).