Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Процессорные модули » SK-9G45-OEM
gcc программа для linux
Mozart
Добавлено 15.08.2014 18:03 Редактировалось 16.08.2014 23:20
5
Сообщение: 1
Mozart
5

Пункты: 1169
Регистрация: 16.05.2014
Пол: Мужчина
Из: планета Земля
написал простейшую программу, скомпилировал в 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++ тоже самое...
правильно ли я понял, что gcc не стоит?

вопрос вот в чём, какие должны быть опции gcc (на компьютере), чтобы программа заработала на плате?

если косяки, то все мои... фичи обходят стороной....
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 15.08.2014 18:47 Сообщение: 2
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
А заглянуть на виртуальной машине в папку с кричащим названием "Hello world" ...
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.08.2014 18:59 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
написал простейшую программу, скомпилировал в LInux'e на компьютере командой gcc main.c -o test , как в принципе и должно было быть программа на SK-9G45-OEM не заработала...

читайте, что такое кросскомпиляция и как ее делать..

если хотите собирать бинарники на плате, то в билдруте выставите опции сборки "gcc и Co" для целевой платы, и после пересборки билдрута получите рутовую содержащую gcc..

в первом случае вы сгенерили под архитектуру x86
для проверки смотрите что выводит команда:
Код
file mymegacoolcode

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Mozart
Добавлено 16.08.2014 21:43 Сообщение: 4
Mozart
5

Пункты: 1169
Регистрация: 16.05.2014
Пол: Мужчина
Из: планета Земля
Цитата
А заглянуть на виртуальной машине в папку с кричащим названием "Hello world" ...

не думал, что там есть пример... сейчас гляну....
спасибо за наводку

если косяки, то все мои... фичи обходят стороной....
Спуститься к концу Подняться к началу
Персональная информация
Mozart
Добавлено 16.08.2014 23:23 Редактировалось 16.08.2014 23:23 Сообщение: 5
Mozart
5

Пункты: 1169
Регистрация: 16.05.2014
Пол: Мужчина
Из: планета Земля
[quote] для проверки смотрите что выводит команда:
Код
file mymegacoolcode
[/quote]
Нашёл Hello world в виртуальной машине...
команда file показала для Hello:
Код
hello: ELF 32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, stripped

для моей тестовой программы:
Код
test_for_arm: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]= abdfc8f5eb20e96276d098e44999deac4916da97, stripped

честно говоря больших различий я не вижу кроме ядра и EABIx, это может повлиять на "не запуск" моей программы в плате?

если косяки, то все мои... фичи обходят стороной....
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.08.2014 00:11 Сообщение: 6
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата

вопрос вот в чём, какие должны быть опции gcc (на компьютере), чтобы программа заработала на плате?


если есть виртуалка с фтп - там должен быть собранный buildroot, путь к компилятору относительно корня buildroot

output/host/usr/bin/arm-none-linux-gnueabi-gcc

с ним 100% должно наступить счастье :) потому что корневая этим компилятором собрана
Спуститься к концу Подняться к началу
Персональная информация
Mozart
Добавлено 17.08.2014 14:30 Сообщение: 7
Mozart
5

Пункты: 1169
Регистрация: 16.05.2014
Пол: Мужчина
Из: планета Земля
Цитата
А заглянуть на виртуальной машине в папку с кричащим названием "Hello world" ...


интереса ради, переписал я исполняемый файл Hello из виртуальной машины в плату... и при запуске выпала ошибка

Код
Segmentation fault!!!


p.s. Linux на плате не переустанавливал...

если косяки, то все мои... фичи обходят стороной....
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.08.2014 00:03 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
интереса ради, переписал я исполняемый файл Hello из виртуальной машины в плату... и при запуске выпала ошибка

у меня не билдрутовая система, проделал ваши движения..
на виртуалке:
Код
jury093@mydebian:~/sk-9g45/test$ ls -l
total 4
-rw------- 1 jury093 jury093 95 Dec 8 2012 hello.c
jury093@mydebian:~/sk-9g45/test$ arm-none-linux-gnueabi-gcc -o hello hello.c
jury093@mydebian:~/sk-9g45/test$ ls -l
total 12
-rwxr-xr-x 1 jury093 jury093 5693 Aug 17 23:36 hello
-rw------- 1 jury093 jury093 95 Dec 8 2012 hello.c

забросил бинарник на платформу:
Код
root@arm9m10:~# file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
root@arm9m10:~# ./hello

Hello ARM WORLD!!!
root@arm9m10:~#


попробуйте при сборке на виртуалке добавить ключ -s (-static) (как советовал Павел), бинарник должен распухнуть примерно до 500кб..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Mozart
Добавлено 18.08.2014 17:48 Редактировалось 18.08.2014 17:53 Сообщение: 9
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
Добавлено 18.08.2014 18:44 Сообщение: 10
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Мда, видимо сравнить makefile - невыполнимая задача ...
"-march=armv5te"
Интересная ситуация, Вам не хочется разбираться с виртуалкой, а нам нужно настраивать вашу сборочную машину ...
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-9G45-OEM