[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Building prog first
From: |
Steffen Dettmer |
Subject: |
Re: Building prog first |
Date: |
Tue, 23 Mar 2010 11:15:07 +0100 |
On Mon, Mar 22, 2010 at 4:44 PM, Reuben Thomas <address@hidden> wrote:
> Not true. automake does not have explicit support for building
> programs with the host compiler when cross-compiling, but I
> have done this successfully in the past when I needed precisely
> to build a program on the host when cross compiling, using
> binutils's BFD_CC_FOR_BUILD macro. It's a pity some version of
> this macro isn't in autoconf, or even autoconf-archive; I shall
> do the latter.
I guess this is a hack and a burden to maintain.
When cross-compiling, why compiling a local tool?
Isn't the correct way to natively compile the local tool,
then use it to cross-compile the package?
> This illustrates a weirdness of autotools: poor support for
> installing interpreted languages, and also conversely for
> build-time compiled programs.
Yes, also for coffee-cooking there is poor support only. :-)
I don't think build-time compiled C programs shall be suppored
while cross compiling. I think it already is complex enough.
Otherwise you had to do all checks twice and end up in many
variables with confusing names, and those who are not
cross-compiling probably accidently will mix them.
> > I though of perl, but (A), i don't like slow tools,
(I think Perl is fast)
> > (C), i find making build-programs
> > in C much more concise than scripting and i can debug it in ddd/gdb.
You can debug Perl in DDD.
> This is interesting, as it doesn't match mine or
> commonly-reported experience (translating my build-time
> programs from C to Perl made them shorter, easier to read and
> fix, and no slower to run, although I wasn't doing more than
> grepping 15k lines of C and writing some of it back out again).
$ time perl -e \
'for($n=0;$n<450000;$n++) { printf "%08d %60s EOL\n", $n, ""; }' > x
real 0m0.713s
$ cat x.c
#include <stdio.h>
int main(void)
{
int n;
for(n=0; n<450000;n++) {
printf("%08d %60s EOL\n", n, "");
}
return 0;
}
$ time make x
gcc -Wall -Wmissing-prototypes -fstrict-aliasing -D_GNU_SOURCE -ansi
-ggdb -ggdb x.c -o x
real 0m0.076s
$ time ./x>x2
real 0m0.301s
so 713ms vs. 377 ms.
Interesting that up to around 100k Perl is even faster:
$ time perl \
-e 'for($n=0;$n<100000;$n++) { printf "%08d %60s EOL\n", $n, ""; }' > x
real 0m0.167s
$ time make x
real 0m0.081s
$ time ./x>x2
real 0m0.079s
(of course those figures are far away from being exact; they just prove
how fast perl is: same magnitude as C)
:-)
SCNR.
oki,
Steffen
- Re: Building prog first, (continued)
- Re: Building prog first, Steffen Dettmer, 2010/03/22
- Re: Building prog first, Steffen Dettmer, 2010/03/22
- Re: Building prog first, Russell Shaw, 2010/03/22
- Re: Building prog first, Reuben Thomas, 2010/03/22
- Re: Building prog first, Ralf Wildenhues, 2010/03/23
- Re: Building prog first, Reuben Thomas, 2010/03/23
- Re: Building prog first,
Steffen Dettmer <=
- Re: Building prog first, Russell Shaw, 2010/03/23
- Re: Building prog first, Reuben Thomas, 2010/03/23
- Re: Building prog first, Steffen Dettmer, 2010/03/24