1

Я пытаюсь проверить обратную совместимость между QNX 6.6.0 и 6.5.0 (в поведении предыдущего question у меня есть). Я скомпилировал относительно простую программу с использованием SDP6.6.0 и выполнил ее на Neutrino 6.5.0. Когда я выполняю программу ошибка во время выполнения последующих выскакивает:Ошибка времени выполнения QNX: неизвестный символ __stack_chk_guard

unknown symbol: __stack_chk_guard

ldd:FATAL: Could not resolve all symbols

Что является причиной этого ..


(Я нашел решение, но он не работает rightaway Когда. Я начал писать этот вопрос, я понял ошибку, которую я сделал. В будущем я буду предлагать решение здесь как Q & A).

ответ

1

Поскольку QNX использует GCC (ЦКК):

Обнаружение переполнения «буфер включено в текущем и новом GCC строит, однако в некоторых (редких и сложных) случаях это может привести к времени выполнения таких осложнений, как не определено символ: __stack_chk_guard ошибки. В таких случаях возможным решением является отключить эту функцию, добавив -fno-stack-protector в список CFLAG, используемый параметрами компиляции gcc »(см. также [1] и What is the use of -fno-stack-protector?).

Дополнительно: Я нашел форум thread где Райан Mansfield (QNX компилятор ведущий Сопровождающий, я думаю) говорит:

One problem [one] might hit trying to get 6.6.0 binaries to run on 6.5.0, is that everything is built is with -fstack-protector , which relies on support in libc. This wasn't in the 6.5.0 libc but IIRC, 6.5.0SP1 added.

Таким образом, в QNX 6.5.0SP1 этот вопрос, кажется, фиксированы.

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

  • Нет связанных вопросов^_^