My Wiki!

Openwrt packaging

Useful commands

 make package/motion/{clean,install} V=s
 

Openwrt Build system

Build_root

Download build_root

svn co svn://svn.openwrt.org/openwrt/trunk/

Downloading Sources

You can either check out the OpenWrt source code via git. (see https://dev.openwrt.org/wiki/GetSource) GIT

The recommended way of checking out the OpenWrt source code is cloning the Git repository using one of the following commands: trunk (main development tree)

The development branch (trunk) contains everything from documentation to experimental patches. Main repository

 git clone git://git.openwrt.org/openwrt.git

Packages feed

git clone git://git.openwrt.org/packages.git

12.09 branch (Attitude Adjustment) Main repository

git clone git://git.openwrt.org/12.09/openwrt.git

Packages feed

git clone git://git.openwrt.org/12.09/packages.git

Check out certain revision

git commits are tagged with SVN ids.

git log --grep=<svn id>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42139 3c298f89-4303-0410-b956-a3cf2f4a3e73

Download and install feed. See below for using custom feed.

cd ~/openwrt/openwrt
./scripts/feeds update -a
./scripts/feeds install -a

Make OpenWrt Buildroot check for missing packages on your build-system using ONE of the following commands:

 make defconfig
 make prereq
 make menuconfig
 

Build

make -j 3

Show Verbose:

  make -j 3 V=s BUILD_LOG=1
  make -j 3 BUILD_LOG=1

BUILD_LOG=1 Write output to logfile perserving error output order. Each make-worker dumping outputs to stdout causes big mess.

Run make without -j1 and with V=s to see single compilation output.

Building in the background

If you intend to use your system while building, you can have the build process use only idle I/O and CPU capacity like this (dualcore CPU):

ionice -c 3 nice -n19 make -j 2

Building single Packages

When developing or packaging software for OpenWrt, it is convenient to be able to build only the package in question (e.g. with package cups):

make package/cups/compile V=s

For the package mc (midnight commander), which is contained the feed packages it looks like this:

make package/feeds/packages/mc/compile V=s

Note that the path start in package directory and package/feeds may not have exactly the same structure as feeds. For example package in ~/openwrt/trunk/feeds/packages/net/snort will be compiled using make ~/openwrt/trunk/package/feeds/packages/snort/compile V=s. Spotting build errors

If for some reason the build fails, the easiest way to spot the error is to do:

make V=s 2>&1 | tee build.log | grep -i error

The above saves a full verbose copy of the build output (with stdout piped to stderr) in /openwrt/trunk/build.log and only shows errors on the screen.

package/index is used after patch. What does this means?

make package/libnfc/{clean,compile} package/index V=s BUILD_LOG=1

“clean” clears the package in builddir. “compile” recreate the package (from feeds/packages/) in builddir and compile. So make changes to code in feeds then clean,compile.

More:

Clean

make clean 

Deletes contents of the directories /bin and /build_dir.

make dirclean

Deletes contents of the directories /bin and /builddir and additionally /stagingdir and /toolchain (=the cross-compile tools) and /logs. 'Dirclean' is your basic “Full clean” operation.

make distclean

Nukes everything you have compiled or configured and also deletes all downloaded feeds contents and package sources.

CAUTION: In addition to all else, this will erase your build configuration (<buildroot_dir>/.config), your toolchain and all other sources. Use with care!

Clean linux objects.

make target/linux/clean

Clean package base-files objects.

make package/base-files/clean

Clean luci.

make package/feeds/luci/luci/clean

Build image

kernel_menuconfig

  • Device driver
    • <> Serial ATA and Parallel ATA drivers —> * [] Verbose ATA error reporting
      • [*] ATA SFF support (for legacy IDE and PATA)
      • Intel SCH PATA support

menuconfig

  • Global build settings
    • [] Compile with full language support * — Advanced configuration options (for developers) * [] Show broken platforms / packages
    • — Toolchain Options
      • [] Build with debug information * [] Image configuration —

        >

        • [*] Preinit configuration options —>
        • Base system
        • block-mount
        • bridge
        • libpthread
        • libstdcpp
        • libthread-db
        • udev
        • wireless-tools
        • Administration
        • sudo
        • syslog-ng
        • Development
        • buildutil
        • diffutil
        • gdb
        • gdb-server
        • trace-cmd
        • trace-cmd-extras
        • Kernel module
        • block device
          • kmod ata core
            • kmod ata piix
          • kmod ide core
            • kmod ide generic
          • kmod nbd
          • kmod scsi cdrom
          • kmod scsi core
        • filesystem
          • fs-autofs4
          • fs-ext4
          • fs-nfs
          • fs-vfat
        • Input modules
          • kmod-hid
          • kmod-input-joydev
          • input-matrixmap
          • input-polldev
        • Network support
          • kmod-bridge
          • kmod-tun
        • Usb support
          • usb-core
          • usb-hid
          • usb-serial
            • pl2303
          • usb-storage
          • usb-storage-extras
          • usb2-pic
        • Video support
          • video-core
            • video-uvc
        • Wireless device
          • kmod-ath10k
          • kmod-lib80211
        • File system
          • libext2fs
        • Libraries
          • database
            • libsqlite3
          • glib2 ←——– disable this Gnome graphical stuffs.
          • jansson
          • libarputil
          • libcap
          • libcunit
          • libcurl
          • libdaemon
          • libdbus-glib
          • libblkid
          • libcharset
          • libconfig
          • libevent2-all
          • libiconv-full
          • libintl-full
          • libcap
          • librpc
          • libusb-compat
          • uclibcxx
        • Multimedia
          • ffmpeg
          • motion
        • Network
          • IP Addr nad nameing
            • avahi-autopid
            • avahi-utils
          • Routing and redirection
            • ip
          • iputils-all
          • nettools-all
          • netcat
          • socat
          • iperf
          • wpasupplicatn
        • Utilities
          • Editor
            • vim-full
            • joe
            • nano
          • Filesystem
            • resize2fs
          • IMA-Carpc ←— update/install feed if not available!!!
          • disc
            • blkid
            • fdisk
          • dmesg
          • hwclock
          • iconv
          • ldconfig
          • ldd
          • usbreset
          • usbutils

        =

Troubleshooting

When there is no clue!!!

make dirclean make defconfig make -j3 V=s make V=99 tools/install make toolchain/install target/compile package/compile

I can't find my <package> in menuconfig

Have you run this command? See this.

./scripts/feeds install <package>

Maybe you are not looking for it in the right submenu. See the Makefile of the package to find out.

cat package/feeds/packages/<package>/Makefile

You are looking for this:

  define Package/<package>/Default SUBMENU:=Firewall SECTION:=net CATEGORY:=Network

Menuconfig appears to cache package lists and (especially) profiles. Try deleting the <buildroot_dir>/tmp directory and then running make menuconfig again.

cd ~/openwrt/trunk
rm -rf tmp
make menuconfig

Also try refreshing your package indexes:

./scripts/feeds update -i

The -i is important if you're not using the latest revisions of any packages, as this flag prevents updates from the feed sources.

Linaro not found on any mirror


I run openwrt trunk on a x86.
When I select the development/gcc package - build stops with an error.
maybe there is a copy and paste error in Makefile:
./package/feeds/packages/gcc/Makefile

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2

    results in gcc-4.6-linaro.tar.bz2
    which can not be found on any server

PKG_MD5SUM:=354853e0b2da90c527e35aabb8d6f1e6

    is a valid MD5 of the package make-3.81.tar.bz2

Please let me know if any further information is required.

Fix this file ​feeds/packages/devel/gcc/Makefile with latest MD5 from current repo: https://github.com/openwrt/packages/blob/master/devel/gcc/Makefile

Packaging

2014-08

Available packages:

  https://github.com/openwrt
  http://git.openwrt.org/
  
  src-git packages https://github.com/openwrt/packages.git
  src-git openwrt-abandoned git://github.com/openwrt/packages-abandoned.git
  src-git luci http://git.openwrt.org/project/luci.git
  src-git routing https://github.com/openwrt-routing/packages.git
  src-git telephony http://git.openwrt.org/feed/telephony.git
  src-git management https://github.com/openwrt-management/packages.git
  src-svn imacarpc https://cvs.dai-labor.de/svn/dang/ima_pj/openwrt-feed/trunk/packages

Note: at this point, the packages are reorganized. Broken/ old packages are in abandoned.

Hi Valent,

we decided to reorganize the packages feed in June, since lots of the 
packages in there were unmaintained and we had lot's of patches we 
couldn't review. The new feed resides on github which makes contributing 
more straigt-forward. See https://github.com/openwrt/packages.

Now the problem with packages like python or php in "oldpackages" is 
that they build a version which have known security issues, so providing 
binaries for them without notice is a bit dubious. Note: we didn't 
delete any package-definitions we just stopped building binaries. Once 
someone takes over maintainership for them and keeps them updated we 
will gladly welcome them in our new packages feed and start building 
binariers for them again.

The current status of "oldpackages" is this:
If you are using trunk and want to use the possibly outdated packages 
you have to enable the oldpackages feed and build them manually.
If you are using barrier breaker in the final version we will still 
build these outdated packages in binary form but won't enable the 
package repository in opkg.conf by default, so you have to manually 
opt-in to use these packages. Some packages there might be broken due to 
changes in the SDK but this will hopefully get addressed before the 
final release. The next release after barrier breaker will not include 
any unmaintained packages at all not even as opt-in.

So if you want to see some of the old packages reappearing in trunk and 
future releases please adopt them and become a maintainer or convince 
someone else to do it. See 
https://github.com/openwrt/packages/blob/master/CONTRIBUTING.md

BuildPackage variables

Example: /home/td/openwrt/trunk/feeds/packages/multimedia/gstreamer/Makefile

101 define Build/InstallDev
102   $(INSTALL_DIR) $(1)/usr/include/gstreamer-$(GST_VERSION)
103   ( cd $(PKG_INSTALL_DIR); $(CP) \
104     ./usr/include/gstreamer-$(GST_VERSION)/* \
105     $(1)/usr/include/gstreamer-$(GST_VERSION)/ \
106   )
107   $(INSTALL_DIR) $(1)/usr/lib
108   ( cd $(PKG_INSTALL_DIR); $(CP) \
109     ./usr/lib/libgst*-$(GST_VERSION).{a,la,so*} \
110     $(1)/usr/lib/ \
111   )
112   $(INSTALL_DIR) $(1)/usr/lib/gstreamer-$(GST_VERSION)
113   ( cd $(PKG_INSTALL_DIR); $(CP) \
114     ./usr/lib/gstreamer-$(GST_VERSION)/libgst*.{la,so} \
115     $(1)/usr/lib/gstreamer-$(GST_VERSION)/ \
116   )
117   $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
118   ( cd $(PKG_INSTALL_DIR); $(CP) \
119     ./usr/lib/pkgconfig/gstreamer*-$(GST_VERSION).pc \
120     $(1)/usr/lib/pkgconfig/ \
121   )
122   $(INSTALL_DIR) $(2)/share/aclocal
123   ( cd $(PKG_INSTALL_DIR); $(CP) \
124     ./usr/share/aclocal/* \
125     $(2)/share/aclocal/ \
126   )
127 endef
128 
129 define Package/gstreamer/install
130   /bin/true
131 endef
132 
133 define Package/gstreamer-utils/install
134   $(INSTALL_DIR) $(1)/usr/bin
135   ( cd $(PKG_INSTALL_DIR); $(CP) \
136     ./usr/bin/gst-feedback* \
137     ./usr/bin/gst-launch* \
138     ./usr/bin/gst-inspect* \
139     ./usr/bin/gst-typefind* \
140     ./usr/bin/gst-xmlinspect* \
141     ./usr/bin/gst-xmllaunch* \
142     $(1)/usr/bin/ \
143   )
144 endef
145 
146 define Package/libgstreamer/install
147   $(INSTALL_DIR) $(1)/usr/lib
148   ( cd $(PKG_INSTALL_DIR); $(CP) \
149     ./usr/lib/libgstbase-$(GST_VERSION).so.* \
150     ./usr/lib/libgstreamer-$(GST_VERSION).so.* \
151     $(1)/usr/lib/ \
152   )
153 endef

These lines…

133 define Package/gstreamer-utils/install
134   $(INSTALL_DIR) $(1)/usr/bin
135   ( cd $(PKG_INSTALL_DIR); $(CP) \
136     ./usr/bin/gst-feedback* \
137     ./usr/bin/gst-launch* \
138     ./usr/bin/gst-inspect* \
139     ./usr/bin/gst-typefind* \
140     ./usr/bin/gst-xmlinspect* \
141     ./usr/bin/gst-xmllaunch* \
142     $(1)/usr/bin/ \
143   )
144 endef

… have this effect:

install -d -m0755 /home/td/openwrt/trunk/build_dir/target-i386_i486_uClibc-0.9.33.2/gstreamer-0.10.36/ipkg-x86/gstreamer-utils/usr/bin
( cd /home/td/openwrt/trunk/build_dir/target-i386_i486_uClibc-0.9.33.2/gstreamer-0.10.36/ipkg-install; cp -fpR ./u     sr/bin/gst-feedback* ./usr/bin/gst-launch*  ./usr/bin/gst-inspect* ./usr/bin/gst-typefind* ./usr/bin/gst-xmlinspect* ./usr/bin/gst-xmllaunch* /home/td/openwrt/trunk/build_dir/target-i386_i486_uClibc-0.9.33.2/gstreamer-0.10.36/ipk     g-x86/gstreamer-utils/usr/bin/ )

As you can see, there's not much work to be done; everything is hidden in other makefiles and abstracted to the point where you only need to specify a few variables.

PKG_NAME - The name of the package, as seen via menuconfig and ipkg
PKG_VERSION - The upstream version number that we're downloading
PKG_RELEASE - The version of this package Makefile
PKG_BUILD_DIR - Where to compile the package
PKG_SOURCE - The filename of the original sources
PKG_SOURCE_URL - Where to download the sources from (directory)
PKG_MD5SUM - A checksum to validate the download
PKG_CAT - How to decompress the sources (zcat, bzcat, unzip)
PKG_BUILD_DEPENDS - Packages that need to be built before this package, but are not required at runtime. Uses the same syntax as DEPENDS below.
PKG_INSTALL - Setting it to "1" will call the package's original "make install" with prefix set to PKG_INSTALL_DIR

PKG_INSTALL_DIR - Where "make install" copies the compiled files e.g:
/home/td/openwrt/trunk/build_dir/target-i386_i486_uClibc-0.9.33.2/gstreamer-0.10.36/ipkg-install

$(1) - $(INSTALL_DIR) e.g:
/home/td/openwrt/trunk/build_dir/target-i386_i486_uClibc-0.9.33.2/gstreamer-0.10.36/ipk     g-x86/gstreamer-utils/

PKG_FIXUP - ???

libint/iconv

To enable full version:

  • The OpenWrt menuconfig gained a new boolean symbol called

“CONFIGBUILDNLS” which is disabled by default [2]. Turning it on will enable the building of the full gettext (libintl) and libiconv packages.

  • The setting can be found in the “Global Build Settings” menu, called

“Compile with full language support”.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

following the discussion about stubbed libintl and libiconv
implementations in OpenWrt [1], I decided to implement a switching
mechanism for those libraries in the OpenWrt buildroot.

This is a short explanation for packagers and image builders on howto
prepare packages to work with the switching.


The OpenWrt menuconfig gained a new boolean symbol called
"CONFIG_BUILD_NLS" which is disabled by default [2]. Turning it on will
enable the building of the full gettext (libintl) and libiconv packages.

The setting can be found in the "Global Build Settings" menu, called
"Compile with full language support".

Packages using either iconv or intl have been changed [3] to include the
new convenience file "include/nls.mk" which exports variables to use
within Makefiles to pull in the right iconv or intl implementation.

The exported variables are:

 ICONV_FULL     - set to 1 if the full iconv implementation is used,
                  else unset
 ICONV_PREFIX   - path to the location of the include/ and lib/ dirs
                  of the currently used iconv implementation
 ICONV_DEPENDS  - expands to a dependency specification that results
                  either in +libiconv-full or nothing, depending on the
                  CONFIG_BUILD_NLS symbol
 ICONV_CFLAGS   - contains the appropriate CFLAGS to make programs find
                  the iconv headers
 ICONV_CPPFLAGS - alias to ICONV_CFLAGS
 ICONV_LDFLAGS  - contains the appropriate LDFLAGS to make programs link
                  to the iconv implementation

 INTL_FULL      - set to 1 if the full libintl implementation is used,
                  else unset
 INTL_PREFIX    - path to the location of the include/ and lib/ dirs
                  of the currently used libintl implementation
 INTL_DEPENDS   - expands to a dependency specification that results
                  either in +libintl-full or nothing, depending on the
                  CONFIG_BUILD_NLS symbol
 INTL_CFLAGS    - contains the appropriate CFLAGS to make programs find
                  the libintl headers
 INTL_CPPFLAGS  - alias to INTL_CFLAGS
 INTL_LDFLAGS   - contains the appropriate LDFLAGS to make programs link
                  to the libintl implementation

Additionally the include automatically extends the TARGET_CFLAGS,
TARGET_CPPFLAGS and TARGET_LDFLAGS variables so that most programs
should pick up the libs automatically in their configure/make process.

To adapt existing package Makefiles to the new mechanism, the following
changes must be made:

 - Add "include $(INCLUDE_DIR)/nls.mk" below the existing "package.mk"
   include

 - Remove existing extensions to TARGET_CFLAGS/CPPFLAGS/LDFLAGS like
   "TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/lib/libintl/include/" (if any)

 - Replace existing extensions to other variables with $(ICONV_PREFIX),
   $(INTL_PREFIX) where applicable (e.g.
   "EXTRA_CPPFLAGS+=-I$(STAGING_DIR)/usr/lib/libiconv/include" to
   "EXTRA_CPPFLAGS+=$(ICONV_CPPFLAGS)" or
   "EXTRA_CPPFLAGS+=-I$(ICONV_PREFIX)/include")

 - Replace dependency specifications like +libiconv, +libiconv-full,
   +libintl or +libintl-full with $(ICONV_DEPENDS) or $(INTL_DEPENDS)

 - Some packages have configure switches like "--with-libiconv=gnu",
   those should be wrapped similar to this:
   "$(if $(ICONV_FULL),--with-libiconv=gnu)"

 - If a program is known to fail with the stub implementation, a
   dependency like "DEPENDS:=@BUILD_NLS" can be specified to hide and
   disable the package from menuconfig if CONFIG_BUILD_NLS is unset


Neither the stub nor the full packages install their (shared) objects
and headers into a "standard" location ($(STAGING_DIR)/usr/...) anymore
so programs that must use them have to use the nls.mk facility.

Programs with optional iconv/intl support will just skip over them as
they're not detectable without extra flags anymore.

As the current Backfire branch and Trunk share the same packages feed,
the BUILD_NLS support has been merged into the latest branch as well.

Regards,
Jow


1)
http://lists.en.qi-hardware.com/pipermail/discussion/2011-January/006770.html
2) https://dev.openwrt.org/changeset/25302
3) https://dev.openwrt.org/changeset/25319
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk1Jz30ACgkQdputYINPTPNeVwCdGESiq8L4sVHRzVlY0EVJNfSW
4gsAni4B2GROqtBRwYz5yKx10EPy3yQ3
=gSoQ
-----END PGP SIGNATURE-----

Fix external toolchain build: linking missing libs

Problem: libiconv not found when linking.

This patch is a new version of a patch already sent several times on the mailing-list, committed and reverted a few times by Daniel Laird, due to several imperfections. This version is a new try at finding a solution that works for everybody. Hopefully it'll work :-) The original problem is that external toolchain builds failed because packages couldn't find their dependent libraries at configure time and could not be linked with them. To fix these two problems, two things are added: * The TARGETLDFLAGS variable was exposed as LDFLAGS at ./configure time thanks to TARGETCONFIGUREOPTS. The TARGETLDFLAGS variable contains -L options with the path in the STAGINGDIR for the libraries. It allows ./configure scripts to properly compile the small test programs testing whether a dependency is properly installed. * The TARGETCFLAGS contains a new -Wl,–rpath-link option for both $(STAGINGDIR)/lib and $(STAGINGDIR)/usr/lib. It allows library depending on other libraries to link properly. The TARGETCFLAGS is exposed as CFLAGS in TARGETCONFIGURE_OPTS. This new version fixes a problem encountered by hartleys hartleys@visionengravers.com when building the kernel. The problem was that the -Wl,–rpath-link options were added to LDFLAGS, while there are options for the C compiler, not the ld linker. Moving them to CFLAGS seems to fix the issue.

Example: TARGETLDFLAGS+=-Wl,-rpath-link=$(STAGINGDIR)/usr/lib

include $(TOPDIR)/rules.mk
#include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=strongswan
PKG_VERSION:=4.3.6
PKG_RELEASE:=6

PATCH_DIR=./patches

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://download.strongswan.org/
PKG_MD5SUM:=e071f46b6c463ce76900758734e6143e
#PKG_SHA1=xxxx


 17 
 18 #PKG_VERSION:=1.7.1
 19 #PKG_RELEASE:=1
 20 #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 21 #PKG_SOURCE_URL=http://dl.bintray.com/nfc-tools/sources/
 22 #PKG_SHA1:=d77c1408f5e38f24d69778b2ff82f68b2d7bc111


PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install

include $(INCLUDE_DIR)/package.mk

## THIS IS IT!
TARGET_LDFLAGS+=-Wl,-rpath-link=$(STAGING_DIR)/usr/lib

define Package/strongswan
  SECTION:=net
  CATEGORY:=Network

Problems with linking libiconv (full)

In general add dependencies or link directive: This works most:

 17 TARGET_LDFLAGS+=\
 18   -Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
 19   $(if $(ICONV_FULL),-liconv)         <------- here
 20 
 21 define Package/libsoup
 22   SECTION:=libs
 23   CATEGORY:=Libraries
 24   TITLE:=libsoup
 25   URL:=http://live.gnome.org/LibSoup
 26   DEPENDS:=+glib2 +libxml2 +libgnutls $(ICONV_DEPENDS) <------- here
 27 endef
 95 EXTRA_LDFLAGS+= \
 96   -Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
 97   -L$(ICONV_PREFIX)/lib -L$(INTL_PREFIX)/lib
 98 
 99 TARGET_LDFLAGS += \
      -Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
      $(if $(ICONV_FULL),-liconv)

Compile glib2 with iconv

Don't need glib2 it's Gnome graphics stuffs.

Many other package depend on glib2 with libiconv so fix glib2.

vim feeds/packages/libs/glib2/Makefile

 28 include $(INCLUDE_DIR)/nls.mk
 29 
 30 TARGET_LDFLAGS+=\     <---------------------------- ADD these 3 lines
 31   -Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
 32   $(if $(ICONV_FULL),-liconv)
 33
 TARGET_LDFLAGS+=\    
    -Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
    $(if $(ICONV_FULL),-liconv)
 33 
 34 define Package/glib2
 35   SECTION:=libs
 36   CATEGORY:=Libraries
 37   DEPENDS:=$(ICONV_DEPENDS) $(INTL_DEPENDS) +zlib +libpthread +libffi
 38   TITLE:=glib 2.0
 39   URL:=http://www.gtk.org/
 40 endef

Error & meaning

Kernel config problem

Problem desc:

scripts/kconfig/conf --silentoldconfig Kconfig
*
* Restart config...
*
*
* Near Field Communication (NFC) devices
*
PN544 NFC driver (PN544_NFC) [N/m/y/?] (NEW) aborted!

Console input/output is redirected. Run 'make oldconfig' to update configuration.

make[7]: *** [silentoldconfig] Error 1
make[6]: *** [silentoldconfig] Error 2
make[6]: Nothing to be done for `all'.
make[6]: Nothing to be done for `relocs'.

Resolution:

 Add CONFIG_X86_SPEEDSTEP_CENTRINO to target/linux/x86/config-3.3

Package gdbserver is missing dependencies for the following libraries: libthread_db.so.1

Attitude Adjustment

> gdbserver needs libthread_db. Select it or it's not there?

Patch:

--- trunk/package/gdb/Makefile.orig 2012-08-25 12:49:29.583032750 +0200
+++ trunk/package/gdb/Makefile 2012-08-25 12:50:40.354038948 +0200
@@ -75,8 +75,10 @@  define Package/gdb/install
 endef

 define Package/gdbserver/install
- $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/usr/{bin,lib}
  $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gdbserver $(1)/usr/bin/
+ $(CP) $(TOOLCHAIN_DIR)/lib/libthread_db* $(1)/usr/lib
 endef

 $(eval $(call BuildPackage,gdb))
+$(eval $(call BuildPackage,gdbserver))

Etcs

Eglibc vs glibc vs uclibc

eglibc vs glibc was an interesting comparison between glibc and eglibc, with some mention of uClibc. In terms of final image size, glibc was largest, eglibc was 300K smaller, and uClibc 800K smaller (than glibc). (Note that the full image size was 10 MB, but this is very dependent on the set of packages). In terms of speed, there was no noticeable difference between glibc and eglibc, but uClibc was “substantially slower”. (it's not clear however exactly how the speed measurements were done) Individual libc*.so sizes followed the trend, with glibc clocking in at 1474 KB, eglibc at 1375 KB and uClibc at 331 KB.


Navigation
Toolbox