Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » FAQ
Моя программа не запускается на плате
Pavel Ivanchenko
Добавлено 15.08.2014 19:01 Редактировалось 15.08.2014 19:05
0
Сообщение: 1
Pavel Ivanchenko
Admin
4.45

Пункты: 83618
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
написал простейшую программу, скомпилировал в LInux'e на компьютере командой gcc main.c -o test , как в принципе и должно было быть программа на SK-9G45-OEM не заработала...
скомпилировал с помощью arm-linux-gnueabi-gcc main.c -o test -march=armv5te
не помогло программа также не запустилась с надписью "segmentation fault"
если компилировать в самой плате, то ситуация вообще странная - gcc нету:
"-sh: gcc: not found"
с g++ тоже самое...


Обычно, вначале забывают применить атрибут исполяемого файла, который может "потеряться" при копировании "chmod 777 ./myprogram".

Если программа не запускается, это говорит о том, что библиотеки с которыми она слинкована не совпадают (не совместимы) с библиотеками на плате.
Радикальным решением является статическая сборка (т.е. все используемые библиотечные функции будут включены в саму программу), ключи для сбокри "-static -s".
Спуститься к концу Подняться к началу
Персональная информация
Mozart
Добавлено 18.08.2014 17:54 Сообщение: 2
Mozart
5

Пункты: 1169
Регистрация: 16.05.2014
Пол: Мужчина
Из: планета Земля
исходные данные:
Ubuntu 14.04 ядро: 3.13.0-34-generic
gcc version 4.8.2
arm-linux-gnueabi-gcc
наипростейшая программа
Код

#include <stdio.h>
int main()
{
printf("hi");
return 0;
}


компиляция
arm-linux-gnueabi-gcc hello.c -o hello -static -s -march=armv5te
результат file hello
Код

hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=10cc6a1a4f0663b1a57d4bc7b90455a4ad49b2ee, stripped

размер исполняемого файла 501кБ

для подключения к плате использую putty, файл на плату заливаю через ftp в папку (может это важно) /home/default
после закачки
Код
chmod 777 hello

результат выполнения ./hello
Код
Segmentation fault


то же самое делаю в виртуальной машине (с диска) (компилятор arm-none-linux-gnueabi-gcc), результат такой же....

может надо какие-то настройки в линуксе на плате покрутить?
может имеет смысл вообще заново переставить линукс?
поделитесь, какой именно компилятор Вы используете? (ссылка на него была бы кстати)

если косяки, то все мои... фичи обходят стороной....
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 20.02.2015 14:11 Редактировалось 20.02.2015 14:12 Сообщение: 3
Pavel Ivanchenko
Admin
4.45

Пункты: 83618
Регистрация: 24.03.2009
Пол: Мужчина
Цитата

Если имеется buildroot с уже собранным тулчейном, то можно воспользоваться следующим вариантом Makefile:

CC=<путь к buildroot>/output/host/usr/bin/arm-linux-gnueabihf-gcc --sysroot=<путь к buildroot>/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot
CFLAGS=-Wall -c
LDFLAGS=
SOURCES=main.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=my_prg

all:clean $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) $(LDFLAGS) -o $@

.c.o:
$(CC) $(CFLAGS) $< -o $@

clean:
rm -f *.o
rm -f my_prg

Так проще будет, если надо будет "подцепить" какие-то библиотеки.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » FAQ