Как использовать мой кросс-компилятор для компиляции чего-либо?

  • Никакое программное обеспечение никогда не будет bugfree/free проблем безопасности.
  • Новое Ядро только зафиксирует известные проблемы безопасности предыдущего выпуска (учитывая, что был кто-то готовый зафиксировать их),
  • Проблемы безопасности отдельных приложений должны быть зафиксированы в приложениях самостоятельно
  • Никакая безопасность программного обеспечения никогда не может обеспечивать полную безопасность, она всегда сводится, как системный администратор/пользователь настроил и использует свою систему
  • Журнал изменений для выпуска 3.12.2 Ядра перечисляет все изменения (новые возможности, фиксирует, …) данного выпуска.

2
26.08.2015, 16:27
3 ответа

Существует стандартная схема именования GNU для компиляторов и других частей инструментальной цепочки:

<target triplet>-<tool name>

Целевой триплет имеет форму

<machine>-<vendor>-<operatingsystem>

И имя инструмента - gcc для компилятора или другое имя инструмента, например ld или strip или ar и т. Д. .

Компилятор по умолчанию, тот, который компилирует собственные двоичные файлы (не кросс-компилятор), просто называется gcc без триплета.

Тройка компилятора, которая находится внутри файла, о котором вы упомянули в своем вопросе, - это arm-none-linux-gnueabi (я знаю, что она выглядит как четверка, но это так). Чтобы использовать его, просто вызовите arm-none-linux-gnueabi-gcc вместо простого gcc .

Если вы создаете что-то, что использует Makefile , вы часто можете получить этот Makefile для использования нужного компилятора, запустив CC = arm-none-linux- gnueabi-gcc make вместо обычного make . Если вы создаете что-то, что использует сценарий GNU configure , вы также можете указать целевой триплет для этого .

4
27.01.2020, 21:54

Больше, чем кросс-компилятор, вам понадобится набор инструментов , поскольку есть больше шагов, связанных с процессом получения исполняемого файла из исходного кода. Эти шаги:

  1. Компиляция (исходный код для ассемблера)
  2. Сборка (код ассемблера в машинный код)
  3. Ссылка (подпрограммы и библиотеки в машинном коде, связанные вместе)

Стандарт именования в инструментальных средствах GNU - <цель> - <инструмент> , например arm-oe-linux-gnueabi-gcc будет компилятором для архитектуры ARM, вариант Open Embedded Linux, а arm-oe -linux-gnueabi-as - ассемблер той же инструментальной цепочки и так далее.

Однако это еще не все, что вам нужно получить от исходного кода на хосте до исполняемого файла на целевой машине, вам также понадобятся заголовки и библиотеки с целевой машины на вашем хост-компьютере для компоновщика. Вот почему у вас возникла ошибка сборки: «Не удается прочитать символы. Файл в неправильном формате». Конечно, если у вас есть заголовки, системный root и все, что скопировано на ваш хост-компьютер, вам нужно установить соответствующие переменные кросс-компилятор, чтобы найти нужные, а не оригинал с вашего хост-компьютера.

Вообще говоря, пакеты с исходным кодом содержат Makefile, подготовленный для приема конкретного компилятора. Судя по предыдущим комментариям, я понял, что вы решили это с помощью переменной CC =. Как только вы все настроите, просто измените CC для вашего Makefile и вызовите make .

Короче говоря, вам нужно создать собственную цепочку инструментов для целевой машины на хост-машине или получить уже созданную.

Удачи и удачи!

1
27.01.2020, 21:54

Хост - это машина, на которой выполняется кросс-компиляция. Ваша машина для разработки.
Целевой - это машина ARM926EJ-S.
Пара моментов, на которые следует обратить внимание:
ARM926EJ-S - это ARMv5, поэтому убедитесь, что ваша цепочка кросс-инструментов компилируется для правильной версии процессора arm.
Каталог установки, указанный в файле make:
INSTALL = /usr/bin/install -c
Я думаю, что это установит на вашу хост-машину (машину разработки), а не то, что вы хотите.
Если вы компилируете программу для встраиваемого устройства, вам нужно создать каталог 'workingInstall' для установки bluez. Затем добавьте его в файловую систему вашего встроенного устройства. (nand, sd-карта).

1
27.01.2020, 21:54

Теги

Похожие вопросы