Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Сборка программы под Linux.


Автор: OlegIT 20.10.2011, 09:45
На PC установил «Debian GNU/Linux 6.0.2.1 "Squeeze" - Official i386 DVD Binary-1 20110626-15:45». Использовал ручную установку, отметил установить всё. Но man gcc не установился. Скачал его с инета.
Начал разработку программ под Linux с самой простой Test_1.c с таким текстом
int main(void){ return 0; }.
Запустил на компиляцию dv@oleg-it:~$ gcc -c -o ./Test_1.o ./Test_1.c. Всё нормально, файл Test_1.o создался.
Программы собираюсь писать под ARM, ставлю опцию компилятора для своего ARM (ARM926EJ-S).
Запускаю компиляцию (получаю ошибку)
dv@oleg-it:~$ gcc -cpu=arm926ej-s -c -o ./Test_1.o ./Test_1.c
gcc: unrecognized option '-cpu=arm926ej-s'

Запускаю так (опять не так)
dv@oleg-it:~$ gcc -mcpu=arm926ej-s -c -o ./Test_1.o ./Test_1.c
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
./Test_1.c:1: error: bad value (arm926ej-s) for -mtune= switch

Запускаю по рекомендации компилятора (и снова не так)
dv@oleg-it:~$ gcc -mtune=arm926ej-s -c -o ./Test_1.o ./Test_1.c
./Test_1.c:1: error: bad value (arm926ej-s) for -mtune= switch

Предполагаю, что у меня не всё установлено, поддержки ARM нет. Как решить проблему?
У меня есть ещё одна макетная плата с ARM Cortex™-A8 (ARMv7 Architecture). Какую опцию ставить в этом случае?

Обнаружил, что я не могу зайти в систему под root, под пользователем apt-get update  - отказано в доступе. Все имена, пароли, явкиsmile при установки были записаны каллиграфическим почерком, но при попытке зайти под root сбой при проверки подлинности.

Автор: kapbepucm 20.10.2011, 10:32
Попробуйте sudo apt-get update
скорее всего, при установке был запрещён вход в систему для root

эту тему стоило назвать кросскомпиляция в Debian  smile

Автор: OlegIT 20.10.2011, 12:41
Мне не долго и переставить систему. Как только правильно её установить, без запретов и что б man-ы все были?

Да, это кросскомпиляция. Во всех описаниях говорится, что это разрешено. Или по умолчанию нет?

Автор: kapbepucm 20.10.2011, 13:05
Переустанавливать не стоит, в запрете нет ничего плохого, это сделано для вашего блага. Вы всегда сможете выполнить команду с правами root через sudo. Делать это вообще надо будет редко (install/update).
Насчет кросскомниляции посмотрите в google такой запрос 'crosscompiling gcc arm on debian '. Я так понимаю простой установкой нужных пакетов не отделаться.

Автор: OlegIT 26.10.2011, 09:03
Ещё проблема обнаружилась, не поставился gdb, при запуске gdb a.out пишет нет такой команды. Файл a.out есть и запускается, простая программа вывода на экран текста "OK".
Компилятор поставил, а для дебагера особое приглашение нужно?

Может gdb это отдельный пакет?

Автор: kapbepucm 1.11.2011, 09:37
sudo aptitude install gdb

Автор: OlegIT 1.11.2011, 13:33
Я сам что-то раскопал. Инета на компьютере с Debian у меня нет.
Скачал исходники gdb, запустил конфигурацию, запустил make. Получил
………………………
checking for iconv... yes
checking for iconv declaration... install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for library containing waddstr... no
configure: WARNING: no enhanced curses library found; disabling TUI
checking for library containing tgetent... no
configure: error: no termcap library found
make[1]: *** [configure-gdb] Ошибка 1
make[1]: Leaving directory `/home/az/GDB/gdb-7.3'
make: *** [all] Ошибка 2

Нашёл termcap, сконфигурил, создал библиотеку libtermcap.a. Но как сделать, что бы компилятор при создании gdb «видел» эту библиотеку не знаю.

С сайта Debian скачал gdbserver_7.0.1-2+b1_i386.deb  (181 кБ). Что с ним делать?


Автор: kapbepucm 1.11.2011, 17:06
sudo dpkg -i твой_файлик.deb

Добавлено через 6 минут и 8 секунд
а в debian не принято же из исходников ставить, всё ставит менеджер пакетов из бинарников

Автор: OlegIT 7.11.2011, 08:49
Как я понимаю для такой установки нужен интернет, а на том ноутбуке, где я работаю под Linux его нет и не будет. Где можно взять бинарник отладчика?

Автор: kapbepucm 10.11.2011, 17:51
качаем http://packages.debian.org/squeeze/gdb файлик *.deb, переносим на ноутбук и там выпоняем коману которую я описывал выше.

Возможно на вашей системе не будет хватать зависимых пакетов, тогда dpkg выругается и вам придётся таким образом выкачивать все недостающие пакеты, но рано или поздно gdb установится smile

У меня подозрение, что на установочном DVD1 все самые популярные пакеты, включая gdb, должны быть. Если после установки /etc/apt/sources.list не правили, то вставте DVD и sudo aptitude install gdb

Автор: OlegIT 15.11.2011, 14:48
Поставил первый диск от debian. Выполнил команду, получил ответ
<user>@oleg-it:~$ sudo dpkg -i gdbserver_7.0.1-2+b1_i386.deb
[sudo] password for <user>: 
Выбор ранее не выбранного пакета gdbserver.
(Чтение базы данных ... на данный момент установлен 130081 файл и каталог.)
Распаковывается пакет gdbserver (из файла gdbserver_7.0.1-2+b1_i386.deb)...
Настраивается пакет gdbserver (7.0.1-2+b1) ...
Обрабатываются триггеры для man-db ...
<user>@oleg-it:~$ gdb
bash: gdb: команда не найдена
<user>@oleg-it:~$

Почему опять gdb нет? Если на этом диске нет gdb, то система как-нибудь ругнулась?

Автор: kapbepucm 16.11.2011, 12:43
Вы установили gdbserver, установите gdb
http://packages.debian.org/squeeze/gdb
http://packages.debian.org/squeeze/gdbserver

Автор: OlegIT 16.11.2011, 12:58
Спасибо.
На приведённых Вами страничках даны зависимости, которые обозначены красными квадратами. Как я понимаю их сначало установить нужно?

Автор: kapbepucm 16.11.2011, 13:50
да, красные кружочки, это пакеты без которых текущий пакет работать не будет. Но, возможно, они у вас уже установлены. Устанавливайте gdb, а если чего не будет хватать, dpkg выругается.
dpkg не ставит пакет, если зависимые пакеты отсутствуют.

Автор: OlegIT 17.11.2011, 11:09
Поставил gdb, работает.
Спасибо.
Если что, ещё обращусь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)