My end goal is to compile wireless tools for my old Actiontec modem/router so I can configure it as a wireless to ethernet bridge. Currently it’s wireless features are (seemingly) controlled by the same binary that manages most of the web interface, but it appears that they used the library wireless tools uses internally for at least some of the functionality.
I’ve never cross compiled for a different CPU architecture before and not sure how to fully identity what I need to do. I’m trying to use uClibc since it appears to be used in the rest of the system, but I’m not sure how to configure buildroot for the modems environment. I made a best guess at what the configuration should be based on the information from proc below, but somethings wrong since a simple C application that only returns 0 compiled with it fails to run properly.
# cat /proc/version
Linux version 2.4.17_mvl21-malta-mips_fp_le (root@localhost.localdomain) (gcc version 2.95.3 20010315 (release/MontaVista)) #1 Thu Apr 21 18:04:37 PDT 2005
# cat /proc/cpuinfo
processor : 0
cpu model : MIPS 4KEc V4.8
BogoMIPS : 149.91
wait instruction : no
microsecond timers : yes
extra interrupt vector : yes
hardware watchpoint : yes
VCED exceptions : not available
VCEI exceptions : not available
You are right, you need a proper mips toolchain to cross-compile your application and Buildroot can do that. But you may need to tweak buildroot’s menuconfig options.
Depending on the output of
file, your options may change. On my system, binary apps inform the following:ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV)These are the options I have enabled for my Buildroot’s menuconfig:
The toolchain itself is installed at /opt/cross-mips-buildroot. You can find the compiler and other tools on /opt/cross-mips-buildroot/usr/bin/
Try to compile a simple hello world application and see if you can run it inside the mips system.
Note: this configuration will not build a C++ compiler. If you need it, you can
grep LIBSTDCPP .configand check if it’s enable or not and change it to your likes. Thenmake menuconfigto make it happen.