OpenWRT с NetBeans 7.3.1

Я энтузиаст C/C++ программист, новичок в этой области изучения настройки прошивки. Для моего последнего проекта я разрабатываю решение для улучшения коммутации пакетов маршрутизатора и выбрал OpenWRT в качестве прошивки с открытым исходным кодом. Я немного пытался настроить среду и хотел бы узнать ваше экспертное мнение о том, на правильном ли я пути.

Я выполнил следующие шаги, чтобы установить openWRT на свой локальный ПК. (http://wiki.openwrt.org/doc/howto/buildroot.exigence).

В make menuconfig я выбрал: - Дополнительные параметры конфигурации - Автоматическая пересборка пакетов - Параметры ToolChain - Сборка gdb - Сборка OpenWRT Image Builder - Сборка OpenWRT SDK - Сборка ToolChain на основе OpenWRT

и сохранил конфигурацию и запустил команды, - make tools/install - make toolchain/install

Затем в Netbeans я добавил новую коллекцию инструментов из Tools -> Options -> C/C++.

и дал базовый каталог как '/openwrt/openwrt/toolchain'

и компилятор C как '/usr/bin/gcc'

Подскажите, знатоки, если я что-то не так сделал? Достаточно ли этого для разработки и компиляции нового класса C для прошивки openWRT, чтобы я мог пересобрать образ для прошивки в роутере?

Ваши советы очень ценны, уважаемые знатоки. Долго мучался с этой проблемой :)

Спасибо еще раз :)

ИЗМЕНИТЬ

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

/openwrt/openwrt/staging_dir/toolchain-i386_gcc-4.5-linaro_uClibc-0.9.32/i486-openwrt-linux

на который ссылается учебник http://downloads.openwrt.org/docs/eclipse.pdf для установки в качестве кросс-компилятора в среде IDE выдается ошибка, указывающая, что компилятор не найден как в eclipse, так и в Netbeans.

НО это работает, когда я указываю на каталог /openwrt/openwrt/toolchain.

Мой вопрос в том, что можно продолжить разработку и использовать компилятор в папке набора инструментов для компиляции проекта?

ИЗМЕНИТЬ 2

Вывод, который я получаю, когда запускаю команду

find ./staging_dir -path "./staging_dir/toolchain*" -name *openwrt-linux

в папке openwrt, как было предложено TheCodeArtist,

./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/mips-openwrt-l‌​inux

ИЗМЕНИТЬ 3

Указание компилятора C

ИЗМЕНИТЬ 4

уточненный путь


person Hasitha Shan    schedule 26.01.2014    source источник
comment
Вопрос, который открыт 2 дня, но на который есть баунти? Кажется, что это слишком широко. Постарайтесь свести вашу проблему к конкретной проблеме, которая ищет ответ, а не совет.   -  person Jens Gustedt    schedule 29.01.2014
comment
Основная проблема с вашим вопросом в том, что вы не говорите, что происходит, когда вы делаете вышеперечисленное, и что вы считаете неправильным. FWIW Я бы предложил построить в командной строке, прежде чем пытаться заставить его работать в Netbeans.   -  person abligh    schedule 29.01.2014
comment
@JensGustedt Спасибо, ребята, за ваш ответ. Я отредактирую вопрос :)   -  person Hasitha Shan    schedule 29.01.2014
comment
@ablight Спасибо, ребята, за ваш ответ. Я отредактирую вопрос :)   -  person Hasitha Shan    schedule 29.01.2014
comment
@JensGustedt Этот вопрос относится к моему последнему проекту моей степени ... поэтому я не колебался, чтобы открыть награду за этот вопрос :)   -  person Hasitha Shan    schedule 29.01.2014
comment
@Hasitha Просто боковая панель. Вы пытаетесь добавить что-то в ядро ​​OpenWRT Linux или в файловую систему? то есть куда идет ваш дополнительный код C? Драйвер устройства в ядре linux или библиотека/исполняемый файл, который запускается в пространстве пользователя на маршрутизаторе с openwrt?...   -  person TheCodeArtist    schedule 02.02.2014
comment
@TheCodeArtist Привет, спасибо за ответ. Хочу добавить в прошивку свои фичи. что включает в себя изменение iptable и добавление нескольких функций безопасности для пакетов перед передачей. чтобы ответить на ваш вопрос, я думаю, что это исполняемый файл библиотеки :)   -  person Hasitha Shan    schedule 02.02.2014
comment
@Hasitha Также обновите свой вопрос, указав подробности вывода следующей команды в каталоге openwrt find ./staging_dir -path "./staging_dir/toolchain*" -name *openwrt-linux   -  person TheCodeArtist    schedule 02.02.2014
comment
@TheCodeArtist сделает все наоборот :)   -  person Hasitha Shan    schedule 02.02.2014
comment
@TheCodeArtist я получаю результат ./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/mips-openwrt-linux   -  person Hasitha Shan    schedule 02.02.2014
comment
Основываясь на выводе команды find, кажется, что вы построили ТОЛЬКО набор инструментов MIPS, а НЕ набор инструментов x86 в openwrt. Теперь, если вы пытаетесь скомпилировать исполняемый файл/библиотеку x86 для цели x86, значит, у вас еще НЕ настроена цепочка инструментов должным образом. вернитесь и проверьте документацию openwrt, чтобы узнать, как сначала собрать набор инструментов x86. В качестве альтернативы, если вы собираетесь создать исполняемый файл/библиотеку MIPS для маршрутизатора MIPS, используйте каталог, возвращаемый командой find, в качестве каталога кросс-компилятора в eclipse/netbeans. Убедитесь, что вы указали правильный префикс вместе с ним.   -  person TheCodeArtist    schedule 02.02.2014
comment
@TheCodeArtist Большое спасибо за вашу информацию :) большое спасибо :) очень благодарен и опубликую результаты, как только закончу :)   -  person Hasitha Shan    schedule 02.02.2014
comment
префикс обычно является предшествующей строкой в ​​именах двоичных файлов в каталоге цепочки инструментов. Например, если имена файлов arm-none-linux-gcc arm-none-linux-ar` и т. д., то префикс будет arm-none-linux-. Поскольку у вас, кажется, есть набор инструментов MIPS, это будет что-то вроде строк mips-*-gcc и т. д. в каталоге ./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/mips-openwrt-l‌​inux. Найдите и используйте правильный префикс при указании каталога набора инструментов.   -  person TheCodeArtist    schedule 02.02.2014
comment
@TheCodeArtist Большое спасибо за помощь, сэр! очень ценю ваш вклад. :)   -  person Hasitha Shan    schedule 02.02.2014
comment
@TheCodeArtist Сэр, я приложил скриншот после указания компилятора C. это выглядит нормально?   -  person Hasitha Shan    schedule 02.02.2014
comment
Я не совсем уверен, что вы правильно поняли. Обычное соглашение состоит в том, чтобы указать каталог цепочки инструментов ./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/initial/bin как файл base directory. Затем укажите относительные пути/имена файлов gcc, g++ и т. д. в отдельных полях для C compiler объявления C++ compiler и т. д., т. е. mips-openwrt-linux-uclibc-gcc и mips-openwrt-linux-uclibc-g++ соответственно. Идея состоит в том, что когда среде IDE необходимо запустить компилятор C/C++, она может найти их, объединив BaseDir + имя_компилятора и используя полученный полный путь для запуска команды компиляции.   -  person TheCodeArtist    schedule 02.02.2014
comment
@TheCodeArtist Я сделал то, что вы упомянули, и когда я указал ./staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/initial/bin в качестве базового каталога, он сказал, что No Compiler sets were found in the directory. Мне нужно вручную указать семейство набора инструментов. Но он работает для папки openwrt/toolchain, поскольку он выбирает семейство набора инструментов как GNU. Ничего, если я укажу семейство инструментов как GNU вручную? Спасибо еще раз :)   -  person Hasitha Shan    schedule 02.02.2014


Ответы (1)


Укажите соответствующий каталог цепочки инструментов для целевой архитектуры (x86, arm, mips и т. д.) в зависимости от устройства, на котором вы собираетесь запускать полученные исполняемые файлы в качестве Base Directory.

Затем укажите относительный путь/имена файлов отдельных команд для C compiler, C++ compiler и т. д. Это будут относительные пути (включая имена файлов) к соответствующие двоичные файлы в каталоге набора инструментов, указанном выше.


Как проверить настройки цепочки инструментов?

Используя IDE, скомпилируйте простую hello-world.c программу. Что-то типа

/* hello-world.c */
int main()
{
    return (42);
}

Дайте Build с помощью IDE и проверьте окно вывода компиляции. Разберитесь с ошибками, если таковые имеются, и соответствующим образом измените параметры конфигурации.

Как только сборка завершится успешно, в каталоге проекта появится двоичный файл hello-world. Откройте новый терминал и запустите команду file для вновь сгенерированного двоичного файла, чтобы убедиться, что он действительно создан для целевой архитектуры. Например, будет отображаться двоичный файл, созданный для x86-64.

$ file hello-world
hello-world: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

В вашем случае я предполагаю, что это будет исполняемый файл MIPS, если цепочка инструментов mips и компилятор правильно настроены в настройках IDE.

person TheCodeArtist    schedule 02.02.2014
comment
Спасибо за этот описательный ответ, сэр! Я попробую это и отпишусь :) еще раз спасибо :) - person Hasitha Shan; 02.02.2014
comment
Сэр, вывод, который я получил, был таким: main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xad0d0ababd4debc5d04bd19e0277d2d862344bbc, not stripped означает ли это, что он успешно настроен? и я прикрепил новые конфигурации как Edit 4.. команды make и debugger могут быть по умолчанию, верно? или их надо менять? Спасибо :) - person Hasitha Shan; 02.02.2014
comment
Это выглядит хорошо, если вы пытаетесь скомпилировать для x86-64. Однако этого НЕ должно было быть, поскольку на снимке экрана, которым вы поделились, показан каталог цепочки инструментов MIPS. Есть много вещей, которые могли пойти не так. Я бы посоветовал вам ознакомиться с концепцией кросс-компиляции и следовать простому руководству, такому как это для начала. это поможет вам понять, где вы ошибаетесь при настройке цепочки инструментов для IDE. - person TheCodeArtist; 02.02.2014
comment
Большое спасибо, сэр .. я проверю это :) - person Hasitha Shan; 02.02.2014
comment
Ссылка, которую вы упомянули, потрясающая, сэр ... она работает ... и, похоже, мне нужно просто использовать IDE, чтобы сохранить правильный синтаксис, и использовать терминал для компиляции вручную. тем не менее, это очень полезно, и, наконец, я могу продолжить разработку. Спасибо еще раз :) - person Hasitha Shan; 05.02.2014