OpenWRT Build System for CentOS 7: Difference between revisions
mNo edit summary |
|||
| Line 1: | Line 1: | ||
How does one create a "build system" (AKA Cross Compile / Cross-Compile / CrossCompile Build System) for OpenWRT? | How does one create a "build system" (AKA Cross Compile / Cross-Compile / CrossCompile Build System) for OpenWRT? | ||
== Other Tutorials == | ==Other Tutorials== | ||
*General Guide for building firmware: https://openwrt.org/docs/guide-user/additional-software/beginners-build-guide | *General Guide for building firmware: https://openwrt.org/docs/guide-user/additional-software/beginners-build-guide | ||
| Line 16: | Line 16: | ||
**Creating Perl modules: https://github.com/Entware/Entware-ng/wiki/Self-installation-of-perl-modules | **Creating Perl modules: https://github.com/Entware/Entware-ng/wiki/Self-installation-of-perl-modules | ||
== Environment == | ==Environment== | ||
*Build System for Cross-Compiling: CentOS 7.8 (There seem to be some missing packages in CentOS 8, so CentOS 7.8 was chosen) | *Build System for Cross-Compiling: CentOS 7.8 (There seem to be some missing packages in CentOS 8, so CentOS 7.8 was chosen) | ||
| Line 38: | Line 38: | ||
***http://bin.entware.net/mipselsf-k3.4/ | ***http://bin.entware.net/mipselsf-k3.4/ | ||
== Steps (as of 9.2020 for the above Environment) == | ==Steps (as of 9.2020 for the above Environment)== | ||
All of the below assumes one is storing files in the user's home directory. | All of the below assumes one is storing files in the user's home directory. | ||
OpenWRT recommends NOT compiling as a root users. To bypass this restriction; | OpenWRT recommends NOT compiling as a root users. To bypass this restriction; | ||
* export FORCE_UNSAFE_CONFIGURE=1 (the ''export'' command adds the variable to the current user session, it will not persist if logging off, confirm with ''printenv'' or ''export -p'') | *export FORCE_UNSAFE_CONFIGURE=1 (the ''export'' command adds the variable to the current user session, it will not persist if logging off, confirm with ''printenv'' or ''export -p'') | ||
=== Obtain Source Files from OpenWRT === | ===Obtain Source Files from OpenWRT=== | ||
* git clone -b openwrt-19.07 <nowiki>https://github.com/openwrt/openwrt.git</nowiki> (downloads the 19.07 branch of OpenWRT, which also includes the latest version, 19.07.03) | *git clone -b openwrt-19.07 <nowiki>https://github.com/openwrt/openwrt.git</nowiki> (downloads the 19.07 branch of OpenWRT, which also includes the latest version, 19.07.03) | ||
** To see repository, in web browser: https://git.openwrt.org/openwrt/ | **To see repository, in web browser: https://git.openwrt.org/openwrt/ | ||
** git tag (essentially shows available versions to build) | **git tag (essentially shows available versions to build) | ||
** git branch (shows local versions of OpenWRT downloaded) | **git branch (shows local versions of OpenWRT downloaded) | ||
** git branch -r (shows versions available for download) | **git branch -r (shows versions available for download) | ||
* Feeds | *Feeds | ||
** Documentation: https://openwrt.org/docs/guide-developer/feeds | **Documentation: https://openwrt.org/docs/guide-developer/feeds | ||
** ~/openwrt/feeds.conf.default | **~/openwrt/feeds.conf.default | ||
** ./scripts/feeds update -a (A script from OpenWRT to makes sure all files are up to date) | **./scripts/feeds update -a (A script from OpenWRT to makes sure all files are up to date) | ||
** ./scripts/feeds (by itself, no "sub-commands", shows available options) | **./scripts/feeds (by itself, no "sub-commands", shows available options) | ||
** ./scripts/feeds list -n (shows main categories of feeds) | **./scripts/feeds list -n (shows main categories of feeds) | ||
*** Should show these Names: packages, luci, routing, and telephony | ***Should show these Names: packages, luci, routing, and telephony | ||
** ./scripts/feeds list -r OneOfTheFeedNames (shows the available packages, names are equivalent to what would be found with ''opkg list'') | **./scripts/feeds list -r OneOfTheFeedNames (shows the available packages, names are equivalent to what would be found with ''opkg list'') | ||
** Example: ./scripts/feeds install htop (an enhanced version of top) | **Example: ./scripts/feeds install htop (an enhanced version of top) | ||
*** Files will be downloaded here: ~/openwrt/package/feeds/packages/ | ***Files will be downloaded here: ~/openwrt/package/feeds/packages/, which are symbolic links to: ~/openwrt/feeds/packages/admin | ||
* Checkout (not needed if a single branch like 19.07 is downloaded) | *Checkout (not needed if a single branch like 19.07 is downloaded) | ||
** git checkout openwrt-19.07 (if multiple branches have been downloaded, switch to using this one) | **git checkout openwrt-19.07 (if multiple branches have been downloaded, switch to using this one) | ||
** Oddly, this command is documented using the latest version of OpenWRT as of 9.2020, but it doesn't work as expected: git checkout v19.07.03 (from https://openwrt.org/docs/guide-developer/build-system/use-buildsystem) | **Oddly, this command is documented using the latest version of OpenWRT as of 9.2020, but it doesn't work as expected: git checkout v19.07.03 (from https://openwrt.org/docs/guide-developer/build-system/use-buildsystem) | ||
* SDK | *SDK | ||
** Download the SDK and uncompress it (which is equivalent to the ''git clone'' command above) | **Download the SDK and uncompress it (which is equivalent to the ''git clone'' command above) | ||
*** URL for SDK (look towards the bottom of the page for SDK): https://downloads.openwrt.org/releases/19.07.3/targets/mvebu/cortexa9/ | ***URL for SDK (look towards the bottom of the page for SDK): https://downloads.openwrt.org/releases/19.07.3/targets/mvebu/cortexa9/ | ||
*** Don't worry about the name ending in x86_64 as this indicates the platform that the cross compiling will take place on. | ***Don't worry about the name ending in x86_64 as this indicates the platform that the cross compiling will take place on. | ||
** tar xf WhatEverFileName (be sure one is in the ~ directory) | **tar xf WhatEverFileName (be sure one is in the ~ directory) | ||
** ./scripts/feeds update -a | **./scripts/feeds update -a | ||
** ./scripts/feeds install WhatEverPackageName | **./scripts/feeds install WhatEverPackageName | ||
* Package Building | *Package Building | ||
** Sources | **Sources | ||
*** https://openwrt.org/docs/guide-developer/package-policies | ***https://openwrt.org/docs/guide-developer/package-policies | ||
*** https://openwrt.org/docs/guide-developer/packages | ***https://openwrt.org/docs/guide-developer/packages | ||
** Using the | ***https://openwrt.org/docs/guide-developer/helloworld/chapter3 | ||
*** make menuconfig | **Using the HTOP package as an example | ||
*** disable all the Global settings to "build all" | ***Make a Manifest: https://openwrt.org/docs/guide-developer/helloworld/chapter3 (can copy similar to the below) | ||
*** Utilities (look in the Makefile file in the define Package/tarcustom (or WhatEverName) for where the package will be) | ***Find a "template" (similar existing package) and copy it: cp -R ~/openwrt/package/feeds/packages/htop ~/openwrt/package/feeds/packages/htopcustom (it's a symbolic link, so cp -R), modify and make changes | ||
***make menuconfig | |||
****PKG_NAME and PKG_VERSION need to change at minimum to get it to show up as a new option | |||
* Headers | ***disable all the Global settings to "build all" | ||
** Potential Locations; | ***Utilities (look in the Makefile file in the define Package/tarcustom (or WhatEverName) for where the package will be) | ||
*** ~/openwrt/build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/linux-mvebu_cortexa9/linux-4.14.195/user_headers/include | *Headers | ||
** Sources | **Potential Locations; | ||
*** https://forum.openwrt.org/t/how-to-obtain-headers-for-openwrts-kernel/50737/6 | ***~/openwrt/build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/linux-mvebu_cortexa9/linux-4.14.195/user_headers/include | ||
*** https://openwrt.org/docs/guide-developer/packages | **Sources | ||
***https://forum.openwrt.org/t/how-to-obtain-headers-for-openwrts-kernel/50737/6 | |||
***https://openwrt.org/docs/guide-developer/packages | |||