2015-11-11 3 views
0

У меня есть приложение (встроенный сервер OPC-UA), скомпилированный с использованием цепочки инструментов кросс-компилятора «arm-none-linux-gnueabi-».segfault на ARM/Linux

Приложение работает как ожидается на Beagle Bone Black (GNU/Linux).

Когда я пытаюсь выполнить приложение на целевой платформе, подобной Beagle-Bone-Black с тем же процессором, приложение выдает seg-fault. Он даже не выполняет первую команду printf в main.

Каковы могут быть аппаратные/программные ограничения, вызывающие такое поведение? Возможно ли это потому, что в ОЗУ недостаточно свободной памяти?

+1

Это довольно открытое, если много людей не столкнулось с одним и тем же. Вы пробовали компилировать и запускать что-то очень простое и минимальное? –

+0

Я собрал много простых приложений, и они работают нормально. Я также пытался отлаживать использование GDB, но backtrace останавливается из-за поврежденных кадров. На самом деле я не знаю. – Praveen

ответ

1

Когда я пытаюсь выполнить приложение на целевой платформе, подобной Beagle-> Bone-Black с тем же процессором, приложение выдает seg-fault. Он не выполняет даже первую команду printf в main.

выглядит ld-linux проблема. Откройте свой двоичный файл в любом редакторе и посмотрите на подстроку ld-linux, например, на amd64, это выглядит так: /lib64/ld-linux-x86-64.so.2, а затем проверьте аналогичную платформу, я полагаю, что у нее есть другой путь ld-linux, если вам повезет, вам просто нужно создать мягкую symlink, если нет, вам нужно перестроить свое приложение.

+0

Привет, Я создал структуру папок. "/ usr/local/lib", содержащий все необходимые общие библиотеки. ../bin содержит исполняемый файл. У меня есть soft-link в "/ lib" для ld-linux. Я думаю, что это не причина. Я ценю ваше предложение и любезно опрокидываю меня, если вы могли бы подумать о чем-то другом. Спасибо – Praveen

+0

Ядро посылает сигнал segfault для обработки, который вызывает неизвестный системный вызов. – fghj

+0

Привет, вы могли бы разработать? – Praveen