реклама на сайте
подробности

 
 
10 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Linux начинающему
A. Fig Lee
сообщение Sep 19 2013, 11:59
Сообщение #61


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Не компилятор, а архитектуру машины.
x86, например, arm.
Смотреть надо в arch директории кернела какие архитектуры поддерживаются.
Например, здесь:
http://lxr.free-electrons.com/source/arch/


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 19 2013, 12:38
Сообщение #62


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Sep 19 2013, 13:42) *
Что такое префикс компилятора и как его узнать ?


На каком процессоре будет бежать программа?
Что говорит
echo $PATH


Про префикс компиллятора.
Он не имеет ничего общего с опцией префикс и указывается при компиляции. Вот такой командой я строю кернел.
make ARCH=arm CROSS_COMPILE=arm-cortexa8-linux-gnueabi- uImage

Указана архитектира ARCH= и префикс для компилятора CROSS_COMPILE=. Это значит, что будет использован компилятор arm-cortexa8-linux-gnueabi-gcc, библиотекарь arm-cortexa8-linux-gnueabi-ar и т.д..
PATH должен содержать местоположение этих компилятора, линкера, библиотекаря и т.д.. Я раньше приводил вам весь список.

Для компиляции в пользовательской моде вещи отличаются. Вот посмотрие документ:
http://landley.net/ols/ols2007/tutorial.txt

Сообщение отредактировал Tarbal - Sep 19 2013, 12:46
Go to the top of the page
 
+Quote Post
berkl
сообщение Sep 19 2013, 13:11
Сообщение #63


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(Tarbal @ Sep 19 2013, 16:38) *
На каком процессоре будет бежать программа?
Что говорит
echo $PATH


Про префикс компиллятора.
Он не имеет ничего общего с опцией префикс и указывается при компиляции. Вот такой командой я строю кернел.
make ARCH=arm CROSS_COMPILE=arm-cortexa8-linux-gnueabi- uImage

Указана архитектира ARCH= и префикс для компилятора CROSS_COMPILE=. Это значит, что будет использован компилятор arm-cortexa8-linux-gnueabi-gcc, библиотекарь arm-cortexa8-linux-gnueabi-ar и т.д..
PATH должен содержать местоположение этих компилятора, линкера, библиотекаря и т.д.. Я раньше приводил вам весь список.

Для компиляции в пользовательской моде вещи отличаются. Вот посмотрие документ:
http://landley.net/ols/ols2007/tutorial.txt





Бежать хочется на этом http://www.variscite.com/products/system-o...-freescale-imx6

Реакция на echo $PATH:

Цитата
dim@dim-System-Product-Name:~/temp/libmodbus-3.0.4$ echo $PATH
/usr/local/fsl-linaro-toolchain/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
dim@dim-System-Product-Name:~/temp/libmodbus-3.0.4$


Файлы в toolchain:

arm-fsl-linux-gnueabi-addr2line arm-linux-gprof
arm-fsl-linux-gnueabi-ar arm-linux-ld
arm-fsl-linux-gnueabi-as arm-linux-ld.bfd
arm-fsl-linux-gnueabi-c++ arm-linux-ldd
arm-fsl-linux-gnueabi-cc arm-linux-nm
arm-fsl-linux-gnueabi-c++filt arm-linux-objcopy
arm-fsl-linux-gnueabi-cpp arm-linux-objdump
arm-fsl-linux-gnueabi-ct-ng.config arm-linux-populate
arm-fsl-linux-gnueabi-gdbtui arm-none-linux-gnueabi-addr2line
arm-fsl-linux-gnueabi-gprof arm-none-linux-gnueabi-ar
arm-fsl-linux-gnueabi-ld arm-none-linux-gnueabi-as
arm-fsl-linux-gnueabi-ld.bfd arm-none-linux-gnueabi-c++
arm-fsl-linux-gnueabi-ldd arm-none-linux-gnueabi-c++filt

так что префикс получается: arm-fsl-linux-gnueabi

Запустил
./configure --host=arm-fsl-linux-gnueabi

Во всяком случае ошибок нет и MakeFile сгенерился



Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 19 2013, 14:08
Сообщение #64


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Sep 19 2013, 17:11) *
Во всяком случае ошибок нет и MakeFile сгенерился


когда получите бинарник (или даже *.о файлы), то проверьте его командой file.

ls -l /usr/local/fsl-linaro-toolchain/bin
что показывает?

На этот процессор тулчейн который дает Фрискейл называется LTIB.

Он и бутлоадер и кернел и драйверы и рут файловую систему построит, установив предварительно кроскомпилятор. Он и все пакеты в правильной версии скачает

Но если ваш тулчейн работает, то не заморачивайтесь.

Сообщение отредактировал Tarbal - Sep 19 2013, 14:10
Go to the top of the page
 
+Quote Post
berkl
сообщение Sep 19 2013, 15:01
Сообщение #65


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Tarbal, A. Fig Lee

Спасибо за поддержку a14.gif !

Сделал make и затем sudo make install

Вроде бы всё нормально, но вот хотелось бы убедится а под АРМ ли всё таки лежит у меня теперь собранная библиотека ? Как убедиться что собрал либу под нужную платформу ? Железа у меня еще нет

Сообщение отредактировал berkl - Sep 19 2013, 15:02
Go to the top of the page
 
+Quote Post
DASM
сообщение Sep 19 2013, 15:30
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



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

и я бы не рекомендовал инсталяционную директорию в корне держать, замучаетесь с этими sudo
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 19 2013, 15:39
Сообщение #67


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Sep 19 2013, 19:01) *
Вроде бы всё нормально, но вот хотелось бы убедится а под АРМ ли всё таки лежит у меня теперь собранная библиотека ? Как убедиться что собрал либу под нужную платформу ? Железа у меня еще нет


Я написал, но вы видимо за обилием информации пропустили.
Протестируйте при помощи команды file исполняемый файл и/или объектные файлы.

Я надеюсь вы на забыли поставить ключ --prefix. Иначе вы установите на свою инструментальную машину, а не на таргет.



Example:
$ file drivers/built-in.o
drivers/built-in.o: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped

Сообщение отредактировал Tarbal - Sep 19 2013, 15:41
Go to the top of the page
 
+Quote Post
berkl
сообщение Sep 20 2013, 05:25
Сообщение #68


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(DASM @ Sep 19 2013, 19:30) *
и я бы не рекомендовал инсталяционную директорию в корне держать, замучаетесь с этими sudo


Вы имеете ввиду лучше ставить библиотеки куда-нибудь в свои папки, типа в /home/my_linux_pc/ARM_libs/ а не в /usr/local/lib/?

Цитата(Tarbal @ Sep 19 2013, 19:39) *
Я написал, но вы видимо за обилием информации пропустили.
Протестируйте при помощи команды file исполняемый файл и/или объектные файлы.

Example:
$ file drivers/built-in.o
drivers/built-in.o: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped


Да, да вы правы, пропустил я. Вот что получилось:

dim@dim-System-Product-Name:/usr/local/lib$ file libmodbus.so.5.0.3
libmodbus.so.5.0.3: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

Похоже всё правильно у меня cool.gif .

еще пара вопросов.
1.
Цитата
Я надеюсь вы на забыли поставить ключ --prefix. Иначе вы установите на свою инструментальную машину, а не на таргет.

Вероятно я не понял вас.--prefix указывает на нужную мне директорию установки библиотеки. Допустим:
./configure --prefix=/home/my_pc/libs/
Иначе библиотека встанет в директорию по умолчанию, что страшного? Сейчас, пока я учусь, мне главное чтоб чего та заработало....
А библиотека, она всегда стоИт на инструментальной машине. Где средства разработки установлены, там же и библиотеки должны быть, причем тут таргет ?

2.Вот вы писали в прошлом посте:
Цитата
make ARCH=arm CROSS_COMPILE=arm-cortexa8-linux-gnueabi- uImage


А зачем мэйку с командной строке указывать архитектуру и префикс компилятора? Мне казалось что требуемый компилятор, линкер и пр., всё указано в Makefile. А объектник создается ровно для той архитектуры, под которую собственно кросскомпилятор и сделан, так что не вижу смысла её (архитектуру) указывать в ком. строке. Поправьте меня, плз

Сообщение отредактировал berkl - Sep 20 2013, 05:26
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 20 2013, 12:19
Сообщение #69


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Sep 20 2013, 09:25) *
1.
Вероятно я не понял вас.--prefix указывает на нужную мне директорию установки библиотеки. Допустим:
./configure --prefix=/home/my_pc/libs/
Иначе библиотека встанет в директорию по умолчанию, что страшного? Сейчас, пока я учусь, мне главное чтоб чего та заработало....
А библиотека, она всегда стоИт на инструментальной машине. Где средства разработки установлены, там же и библиотеки должны быть, причем тут таргет ?

2.Вот вы писали в прошлом посте:


А зачем мэйку с командной строке указывать архитектуру и префикс компилятора? Мне казалось что требуемый компилятор, линкер и пр., всё указано в Makefile. А объектник создается ровно для той архитектуры, под которую собственно кросскомпилятор и сделан, так что не вижу смысла её (архитектуру) указывать в ком. строке. Поправьте меня, плз

1. Если на компьютере на котором вы компилируете установлены те же исполняемые файлы или библиотеки, то они будут заменены на вновь скомпилированные. Если вы замените исполняемый файл для 386 на исполняемый файл для ARM, то вы не сможете его запустить на 386 машине. Поэтому дефолт сразу отпадает. То, на что указал DASM, если вы сделаете директорию установке внутри вашей домашней директории, то sudo писать не обязательно. Оно действительно пройдет, однако я не уверен, что не обязательно.

2. Мой пример для компиляции кернела и драйверов. Если вы компилируете апликации/библиотеки, то он вам не нужен.
Извините за усложнение вопроса не относящейся к предмету информацией.

Если вы покажете содержимое директории о котором я вас просил, то я скажу все префиксы, которые вы можете использовать для host= и заодно вы лучше поймете как оно устроено.

Сообщение отредактировал Tarbal - Sep 20 2013, 12:19
Go to the top of the page
 
+Quote Post
Victor®
сообщение Sep 20 2013, 12:24
Сообщение #70


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Встаюлю свои 5 коп.
В Линуксе практически 0.
Есть у меня нетбук на Атоме.
Не для работы - интернет, скайп, почта, музыка, видео...
Вообщем - командировочный вариант.

Винду снес по причине жутких тормозов.
Ставил Mint, Ubunty, OpenSUSE.
На последнем (с XFCE) и остановился.
С Минтом и Убунту были проблемы с WiFI и звуком.
Малой кровью не решились. OpenSUSE с четверть пинка все работает (и очень шустро).


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
berkl
сообщение Sep 23 2013, 07:02
Сообщение #71


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Tarbal, приветствую вас,

Спасибо за уточнения про --prefix


Цитата
Если вы покажете содержимое директории о котором я вас просил, то я скажу все префиксы, которые вы можете использовать для host= и заодно вы лучше поймете как оно устроено.


В приложение вставил файл с заголовками файлов в папке /usr/local/fsl-linaro-toolchain/bin. Гляньте, плз.

Пока пойду разбираться с написанием CMakeLists.txt для проекта с внешней библиотекой.

Еще раз спасибо.




Прикрепленные файлы
Прикрепленный файл  ls__l_.txt ( 7.95 килобайт ) Кол-во скачиваний: 62
 
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 23 2013, 12:28
Сообщение #72


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Sep 23 2013, 11:02) *
Tarbal, приветствую вас,

Спасибо за уточнения про --prefix




В приложение вставил файл с заголовками файлов в папке /usr/local/fsl-linaro-toolchain/bin. Гляньте, плз.

Пока пойду разбираться с написанием CMakeLists.txt для проекта с внешней библиотекой.

Еще раз спасибо.



Значит у вас есть исполняемые файлы с префиксом arm-fsl-linux-gnueabi-
И создано два комплекта линков на них с префиксами arm-linux- arm-none-linux-gnueabi-.

По всей видимости все три префикса будут работать для вас:
arm-fsl-linux-gnueabi-
arm-linux-
arm-none-linux-gnueabi-

Я полагаю, что бывают (или сначала думали, что бывают) три разные случая, для которых нужны разные компиляторы (и остальной набор). Но в данном случае для всех трех случаев используют один и тот же компилятор.

Сообщение отредактировал Tarbal - Sep 23 2013, 12:30
Go to the top of the page
 
+Quote Post
berkl
сообщение Oct 3 2013, 08:40
Сообщение #73


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Ещё вопросики:

1. Хочется попробовать создать проектик на базе gcc, где будет генериться лог файл, на основе каких-нибудь данных, приходящих например, с УАРТа, а сам лог файл сохранять на USB флешку. Погуглил, чё та кисло как-то, не о том всё (учат как в консоли файлы создавать и пр....) .

2. Вот допустим, есть у меня АЦП, с SPI. По идее я могу у себя в проекте сделать исходник ADC_driver.c и описать в нем все функции обращения к АЦП (настройка режимов, чтение результатов АЦП, чтение статусов и тд...), постредством драйвера SPI, уже присутствующего в моём Линуксе. Но что-то мне подсказывает, что в Линуксе так делать не кашерно.
А уж не надо ли по-честному писать линуксовый драйвер для моей ацпушки, пересобирать дистрибутив, чтоб в нем был этот драйвер? Или всё таки достаточно включить сишный исходник драйвера АЦП в мой целевой проект и всё... ?

3. Вопрос по терминологии, вероятно дурацкий. До знакомства с Линуксом, я думал что понятие "файловая система" описывает как организовано хранение данных на носителе (FAT32, extFAT.....). В линуксе есть еще "корневая файловая система" - это набор папок, входящих в любой дистрибутив линукса. Есть такая фраза: - "Файловая система монтируется к ядру". Что это значит "монтируется"? Что в данном контексте значит "файловая система"?
А флешку когда в комп вставляешь, она ведь тоже "монтируется"? Это что значит? Монтируется тоже к ядру?

Спасибо!
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 3 2013, 13:02
Сообщение #74


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(berkl @ Oct 3 2013, 12:40) *
Ещё вопросики:

1. Хочется попробовать создать проектик на базе gcc, где будет генериться лог файл, на основе каких-нибудь данных, приходящих например, с УАРТа, а сам лог файл сохранять на USB флешку. Погуглил, чё та кисло как-то, не о том всё (учат как в консоли файлы создавать и пр....) .

2. Вот допустим, есть у меня АЦП, с SPI. По идее я могу у себя в проекте сделать исходник ADC_driver.c и описать в нем все функции обращения к АЦП (настройка режимов, чтение результатов АЦП, чтение статусов и тд...), постредством драйвера SPI, уже присутствующего в моём Линуксе. Но что-то мне подсказывает, что в Линуксе так делать не кашерно.
А уж не надо ли по-честному писать линуксовый драйвер для моей ацпушки, пересобирать дистрибутив, чтоб в нем был этот драйвер? Или всё таки достаточно включить сишный исходник драйвера АЦП в мой целевой проект и всё... ?

3. Вопрос по терминологии, вероятно дурацкий. До знакомства с Линуксом, я думал что понятие "файловая система" описывает как организовано хранение данных на носителе (FAT32, extFAT.....). В линуксе есть еще "корневая файловая система" - это набор папок, входящих в любой дистрибутив линукса. Есть такая фраза: - "Файловая система монтируется к ядру". Что это значит "монтируется"? Что в данном контексте значит "файловая система"?
А флешку когда в комп вставляешь, она ведь тоже "монтируется"? Это что значит? Монтируется тоже к ядру?

Спасибо!


1. Это язык C. Смотрите как создавать файлы. Есть куча примеров в интернете.
Ключевые слова для поиска fopen и более низкоуровневую open.
http://unixhelp.ed.ac.uk/CGI/man-cgi?open+2

2. Дело в том, что в Линуксе драйверами называются более элементарные вещи чем вы полагаете. В вашем драйвере будет сотрудничать несколько Линуксовских драйверов. Один из них существующий SPI, Другой -- драйвер вашего конкретного АЦП, который будет как бы более высокоуровневым. Он будет обращаться к SPI драйверу для доступа к рессурсам вашего железа. Есть множество примером в кернеле и если вы уточните детали, то можно будет найти какой-нибудь драйвер для наглядного пособия.


3. Корневая файловая система это обычная файловая система. В ней особенного только то, что в нужных местах лежат нужные файлы, но это уже не имеет никакого отношения к понятию файловая система. Кернел при старте монтирует ее, потом запускает скрипты (и берет конфигурацию) из мест, которые он знает (в большенстве систем /etc/inittab ключевой файл. В Убунту иначе).
То, что флешка монтируется это плаг анд плей. Это не всегда работает, но всегда можно использовать команду mount смонтировать любой диск (блоковое устройство) к система (а не к кернелу).



Полагаю если вы хотите обсудить какой-то проект, лучше созать отдельную тему. Тем кто будет искать ответы будет легче их найти.
Go to the top of the page
 
+Quote Post
alx2
сообщение Oct 7 2013, 08:17
Сообщение #75


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(berkl @ Oct 3 2013, 13:40) *
1. Хочется попробовать создать проектик на базе gcc, где будет генериться лог файл, на основе каких-нибудь данных, приходящих например, с УАРТа, а сам лог файл сохранять на USB флешку.

А где вопрос? sm.gif
man syslog
man syslogd
man syslog.conf


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post

10 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01935 секунд с 7
ELECTRONIX ©2004-2016