<div dir="ltr">Hi Rob,<div><br></div><div>There is an issue with the cc part. I installed stock ubuntu desktop 14.04 and the arm tool chains with the apt-get install.</div><div>However, the tools don't have anything that ends with cc and when that is combined with the arm-none-gnueabi- cc gives an error.</div><div>That's the reason I updated the README. I don't mind adding more sections on installing the toolchains.</div><div><br></div><div><div>Usually ARCH is used for platform specific config to be pulled out. I like the idea of compiling the sources for all platforms without worrying</div><div>about specific platform codes. However CROSS_COMPILE and CC are not going to be always intuitive. They need to be explicitly specified.</div></div><div><br></div><div>I would also like to point to you that in my experience as an embedded developer, I had to hand hold new developers as many dint know the</div><div>trivial stuff of exporting variables or searching through the environment. Nonetheless they were good coders of algorithms. So even though</div><div>some things are taken as granted by those already in this field, one must add sufficient documentation to make sure that anyone reading it</div><div>should be able to make full compilation and understand the basic structure quickly.</div><div><br></div><div>Please let me know if you would like me to update the README further with a few more sections and I would be glad to post a patch. I look</div><div>forward to using toybox in the next version of our product. As a starter I intend to roll out an arm distribution for beaglebone based on toybox</div><div>instead of the existing distribution from TI based on busybox. But my immediate priority is to get the latest kernel to work with the board.</div><div><div><br></div></div><div>Thank you,</div><div>Preetam</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 4 October 2015 at 06:45, Rob Landley <span dir="ltr"><<a href="mailto:rob@landley.net" target="_blank">rob@landley.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I tried to use the email interface to let this message through (you<br>
aren't subscribed to the list so it goes to moderation) and accidentally<br>
discarded it instead. (Oops. Sorry.)<br>
<br>
So here's the whole message quoted:<br>
<br>
On 10/03/2015 02:40 PM, <a href="mailto:toybox-owner@lists.landley.net">toybox-owner@lists.landley.net</a> wrote:<br>
> Subject: [PATCH] Add cross compile info to README<br>
> From: Preetam S Reddy <<a href="mailto:preetamsashankreddy@gmail.com">preetamsashankreddy@gmail.com</a>><br>
> Date: 10/03/2015 02:40 PM<br>
><br>
> To: <a href="mailto:toybox@lists.landley.net">toybox@lists.landley.net</a><br>
> CC: Preetam S Reddy <<a href="mailto:preetamsashankreddy@gmail.com">preetamsashankreddy@gmail.com</a>><br>
<span class="">><br>
><br>
> Add a section for cross compiling on ubuntu. It makes it easy for<br>
> newbies to quickly get on with the compilation for arm. Also,<br>
> add some character drawing for section headings.<br>
<br>
</span>We cross compile the same way the Linux kernel does, and the "building<br>
toybox" section has a cross compile example...<br>
<span class=""><br>
> Signed-off-by: Preetam S Reddy <<a href="mailto:preetamsashankreddy@gmail.com">preetamsashankreddy@gmail.com</a>><br>
> ---<br>
>  README | 44 ++++++++++++++++++++++++++++++++++++--------<br>
>  1 file changed, 36 insertions(+), 8 deletions(-)<br>
><br>
> diff --git a/README b/README<br>
> index 9ff7368..80450a6 100644<br>
> --- a/README<br>
> +++ b/README<br>
</span>...<br>
<div><div class="h5">> @@ -40,7 +43,27 @@ For more about cross compiling, see:<br>
>    <a href="http://landley.net/writing/docs/cross-compiling.html" rel="noreferrer" target="_blank">http://landley.net/writing/docs/cross-compiling.html</a><br>
>    <a href="http://landley.net/aboriginal/architectures.html" rel="noreferrer" target="_blank">http://landley.net/aboriginal/architectures.html</a><br>
><br>
> ---- Using toybox<br>
> +====================================<br>
> +# CROSS COMPILING in UBUNTU for ARM<br>
> +====================================<br>
> +<br>
> +You will need the following environment to cross compiling for arm:<br>
> +     $ export ARCH=arm<br>
> +     $ export CC=gcc<br>
> +     $ export CROSS_COMPILE=arm-____-____-<br>
> +<br>
> +You can use the compiler of your choice which can be:<br>
> +<br>
> +arm-linux-androideabi-<br>
> +arm-linux-gnueabi-<br>
> +arm-linux-gnueabihf-<br>
> +arm-none-eabi-<br>
> +<br>
> +Depending on tour installation, use one of the above for CROSS_COMPILE.<br>
> +<br>
> +=============<br>
> +# Using toybox:<br>
> +=============<br>
<br>
</div></div>That's the new section. It's specific to a single distribution, and you<br>
didn't actually say how to install the toolchains. (Apparently ubuntu<br>
comes with some, you can "apt-get install gcc-arm-linux-androideabi" if<br>
you know to do that.)<br>
<br>
1) Toybox doesn't use $ARCH.<br>
<br>
2) $CC defaults to "cc", as in if you don't set it the "make" command<br>
will set it to that default value:<br>
<br>
  <a href="http://www.gnu.org/software/make/manual/make.html#Implicit-Variables" rel="noreferrer" target="_blank">http://www.gnu.org/software/make/manual/make.html#Implicit-Variables</a><br>
<br>
Because back in SUSv2 (I.E. posix-1997) "cc" was the posix name for the<br>
compiler:<br>
<br>
  <a href="http://pubs.opengroup.org/onlinepubs/7908799/xcu/cc.html" rel="noreferrer" target="_blank">http://pubs.opengroup.org/onlinepubs/7908799/xcu/cc.html</a><br>
<br>
In SUSv3 (posix-2001) that switched to "c99", which is what's currently<br>
still there (no "c11", as of yet nobody cares):<br>
<br>
  <a href="http://pubs.opengroup.org/onlinepubs/009695399/utilities/c99.html" rel="noreferrer" target="_blank">http://pubs.opengroup.org/onlinepubs/009695399/utilities/c99.html</a><br>
<br>
Which means that in _theory_ posix-2008/2013 specifies $(CC) to default<br>
to "c99" to but it still defaults to the older "cc" anyway:<br>
<br>
  <a href="http://pubs.opengroup.org/onlinepubs/7908799/xcu/cc.html" rel="noreferrer" target="_blank">http://pubs.opengroup.org/onlinepubs/7908799/xcu/cc.html</a><br>
<br>
But "gcc" is not a name standardized by anybody. If you're using llvm<br>
(which android does), you're not going to say "gcc". Ubuntu provides a<br>
"cc" symlink at /usr/bin/cc.<br>
<br>
3) The CROSS_COMPILE variable is demonstrated in the "building toybox"<br>
section, and has been since the very first version:<br>
<br>
<a href="https://github.com/landley/toybox/commit/09e8bde9f292e537c35387435b5bea9024cf28e8" rel="noreferrer" target="_blank">https://github.com/landley/toybox/commit/09e8bde9f292e537c35387435b5bea9024cf28e8</a><br>
<br>
I'm all for making the README clearer, but could you explain what part's<br>
confusing you a bit more? (Would it be good to link to<br>
<a href="http://landley.net/writing/docs/cross-compiling.html" rel="noreferrer" target="_blank">http://landley.net/writing/docs/cross-compiling.html</a> maybe?<br>
<br>
Hmmm... I suppose it's confusing that:<br>
<br>
  make CROSS_COMPILE=blah-<br>
<br>
Doesn't work. Because I'm not exporting the make variables. Which is<br>
easy enough to do _except_  that $(CC) has a default value "cc", meaning<br>
if I export it from the makefile the one in configure never gets used.<br>
(That's why I hadn't done it before, but it's probably ok...?)<br>
<br>
Thanks,<br>
<br>
Rob<br>
</blockquote></div><br></div>