dtc: invalid option -- '@'
This is an error familiar to anyone trying to compile device tree overlays for the BeagleBone Black (BBB) on the latest Ubuntu image (2013-07-22). These overlays are required to enable the various devices on board, such as the CANBus in my previous post.
There are plenty of places out there which direct you to Robert C Nelsons Script for building the patched version. But for some reason or other this does not work for me. It gets as far as fetching the dtc source files, but does not patch them or compile/install anything. So if anyone else is having similar troubles, here is how to do it manually (from the comments here).
Firstly, install the packages needed to build the dtc binary.
sudo apt-get install build-essential bison flex
Grab the dtc source code
git clone http://jdl.com/software/dtc.git/ cd dtc
Go to the specific state which the patch is for
git reset --hard f8cb5dd94903a5cfa1609695328b8f1d5557367f
Grab the patch
wget https://patchwork.kernel.org/patch/1934471/raw/ -O dynamic-symbols.patch
Apply the patch
git apply dynamic-symbols.patch
Now build and install dtc
make sudo cp dtc /usr/local/bin
Now you should be able to compile device tree overlays with the following prototype
dtc -O dtb -o <overlay filename> -b 0 -@ <source filename>
Great post, thanks!, Now I can compile dts to dtbo with no problem.
Very nice instructions, thanks! I got the same "dtc: invalid option -- '@'" error on the BBB after I built and copied the executable though. Finally I worked on some other items and happened to reboot and now the new dtc works? No idea why a reboot might have been required, but noting it here in case it helps someone else. I am running Debian Wheezy 7.2 Hard Float Minimal.
High thanks for the post.
I have an error :
When I do wget https://patchwork.kernel.org/patch/1934471/raw/ -O dynamic-symbols.patch
I get the error :
"ERROR: The certificate of 'patchwork.kernel.org' is not trusted.
The certificate has not yet been activated"
What I can do to do not have this error again?
Thanks a lot
Jon: try to execute the command with the complete path "/usr/local/bin/dtc -O dtb ...etc.."
I tried this post in Ubuntu and it worked fine. The only isue was that ubuntu has the binary dtc originaly installed in /usr/bin/, not in /usr/local/bin, so the last copy of the recompiled one did not replace the original.
Hi,thanks for the instructions!Great post!
The line git clone http://jdl.com/software/dtc.git/ no longer works, I have used in in the past but the site seems to have gone.
Is there another source of this file?