Thursday, January 11, 2018

DNS-323 Toolchain

Originally published: June 22, 2012
I’ve been wanting to be able to compile software for my NAS, the DNS-323 from D-Link, and I found instructions at a couple of different places on the internet.  In order to do this, you’ll need a cross compilation toolchain, which you can either download or build yourself.
I found some good information on the dns 323 wiki, but ultimately those instructions didn’t work for me, on firmware 1.08.  Which incidentally, can be downloaded from D-Link’s website,  The pre-built toolchain provided on the wiki, didn’t have libstdc++, and the instructions for building your own failed for me (couldn’t get binutils to build).
I found very good instructions here for how to build the toolchain, complete with modifications to enable dynamic linking of libraries.  Binaries are provided on that site, but they were for x86-64, and I’m on a 32-bit host.
So, I used Ubuntu Hardy Heron running in a VirtualBox VM to build it for myself.  Read on for instructions on how to build it on your machine.

Cross Compile Instructions

First you’ll need to set up some build dependencies.  The toolchain requires an older (3.x) gcc in order to build.  gcc 4.x may work, but most of what I’ve read seems to indicate that it probably does not.  You can set the /usr/bin/gcc symlink back to it’s original when you’re done.
$ sudo apt-get install gcc-3.4 g++-3.4 bison flex gettext make bzip2 libncurses5-dev patch git-core
$ cd /usr/bin
$ sudo mv gcc gcc-orig
$ sudo ln -s gcc-3.4 gcc
$ sudo mv g++ g++-orig
$ sudo ln -s g++-3.4 g++
Next you’ll need to clone the git repository containing the toolchain source.  Note that when you run ‘make’ a number of packages will be downloaded and then built.
$ git clone git:// 
$ cd toolchain_arm
$ make
The resulting toolchain files are in the toolchain_arm directory.

Using the Toolchain

Test minimum cross compiler functionality, by building a hello world app.  Save the following to hello.cpp
#include <iostream>

int main(int argc, char* argv[])
    std::cout << "the toolchain worked!" << std::endl;
    return 0;
Now compile it with the toolchain
$ source toolchain_arm/build-env
$ ${CXX} hello.cpp -o hello
Verify that the resulting file is an ARM executable
$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), not stripped
Now you can just copy the executable to your device and run it to see if it works.

Building Autotools style projects

You’ll probably have some open source software that you want to compile for your device. Here an example using curl.
$ wget
$ tar -zxvf curl-7.26.0.tar.gz
$ cd curl-7.26.0
$ source ~/toolchain_arm/build-env #or wherever you decided to save your toolchain
$ ./configure --host=arm-linux-uclibc 
$ make


  1. Best Places To Bet On Boxing - Mapyro
    Where To Bet On Boxing. It's a sports betting event in which you bet on the outcome of a game. In 메이피로출장마사지 the boxing world, each player must decide if or not to

  2. This collapsible picnic basket is a very good idea, and it appears far more intimidating considering how simply and smoothly it prints. Nowadays, smartphones are extra than simply communication units. They present entertainment, internet access, scheduling and planning, and might even be highly effective Men’s Loafer Slippers sufficient to get some work accomplished. A smartphone stand could be incredibly handy so that you can} get the most out of your telephone, but it’s not one thing that folks normally carry round. I’d like to know if there are cool locations I am not visiting, and I will add any extra to this list that I hear about. 3D Printing Canadaand 3D Printing Calgary – For Canadian 3D printer house owners.

  3. The house edge, which is a very necessary half of} the game for players, can also be|can be} decided by the these metrics for an internet casino. Gambling companies keep these types of|these kind of|most of these} statistics under gloves, due to this fact players never really get a crystal clear idea of the particular odds, the house edge, nicely as|in addition to} payback share. Slot machines, computerised or not, 솔카지노 perform in the same way. Slots normally feature three reels although in other circumstances they might be structured with 5 reels.