GDC D compiler for PocketPCs is here!

Manfred Hansen m.hansen at kielnet.net
Sat Aug 12 06:03:46 PDT 2006


Am Fri, 11 Aug 2006 17:50:09 -0400 schrieb Chad J:

> Manfred Hansen wrote:
>> Am Fri, 11 Aug 2006 15:59:47 -0400 schrieb Chad J:
>> 
>> 
>>>pedro alves wrote:
>>>
>>>>Frits van Bommel wrote:
>>>>
>>>>
>>>>>Chad J wrote:
>>>>>
>>>>>
>>>>>>Manfred Hansen wrote:
>>>>>>
>>>>>>
>>>>>>>Hello,
>>>>>>>
>>>>>>>i have try to compile void main() {}
>>>>>>>
>>>>>>>but i get the following error message:
>>>>>>>hansen at manni-lx:~/dd$ arm-wince-pe-gdc hello_arm.d -o hello_arm
>>>>>>>/tmp/ccx3xcRb.s: Assembler messages:
>>>>>>>/tmp/ccx3xcRb.s:6: Error: junk at end of line, first unrecognized 
>>>>>>>character is `@'
>>>>>>>/tmp/ccx3xcRb.s:7: Error: junk at end of line, first unrecognized 
>>>>>>>character is `@'
>>>>>>>/tmp/ccx3xcRb.s:8: Error: too many memory references for `mov'
>>>>>>>/tmp/ccx3xcRb.s:9: Error: no such instruction: `stmfd 
>>>>>>>sp!,{fp,ip,lr,pc}'
>>>>>>>/tmp/ccx3xcRb.s:10: Error: too many memory references for `sub'
>>>>>>>/tmp/ccx3xcRb.s:11: Error: no such instruction: `bl __gccmain'
>>>>>>>/tmp/ccx3xcRb.s:12: Error: expecting operand after ','; got nothing
>>>>>>>/tmp/ccx3xcRb.s:13: Error: too many memory references for `mov'
>>>>>>>/tmp/ccx3xcRb.s:14: Error: no such instruction: `ldmfd sp,{fp,sp,pc}'
>>>>>>>
>>>>>>>Under debian sarge and under ubuntu 6.0.6 I have copy the 
>>>>>>>arm-wince-pe directory to /usr/local and i have extended
>>>>>>>the PATH Variavble.
>>>>>>>
>>>>>>>Manfred
>>>>>>
>>>>>>
>>>>>>Argh, I can't replicate it, even when I move it my other system.  The 
>>>>>>catch is that I've used both systems to develop this, so maybe there 
>>>>>>is a missing dependency that I don't know about.
>>>>>>
>>>>>>Btw, I compiled and used this on kubuntu 6.0.6.  The other system is 
>>>>>>coLinux running Debian.
>>>>>>
>>>>>>In a while I'll make another coLinux Debian w/ fresh filesystem, and 
>>>>>>see how that goes.
>>>>>>
>>>>>>Those error messages look like the ones I got when the arm-wince-pe 
>>>>>>assembler was given x86 assembly code.
>>>>>
>>>>>
>>>>>Now I'm no cross-compiling expert, but that last statement would back 
>>>>>up my first thought: did you build arm-wince-pe binutils to go with 
>>>>>your arm-wince-pe-gdc? In particular arm-wince-pe-gas?
>>>>>Maybe only on one system (that being the one where it works)?
>>>>
>>>>
>>>>That sure looks like it. That is arm assembly on the error log, and '@' 
>>>>is the comment char on arm assembly,
>>>>and it is also the first character the assembler is complaining about.
>>>>
>>>>Isn't there a gdc -v switch to show what commands are being invoked?
>>>>
>>>>Cheers,
>>>>Pedro Alves
>>>
>>>hehe I was just about to ask for that.
>>>
>>>Manfred, try
>>>arm-wince-pe-gdc -v hello_arm.d -o hello_arm
>>>and give us the output.
>>>
>>>To answer your question Frits, the binutils come from a cegcc linux 
>>>binary prerelease.  As a result, the binutils were built on a computer 
>>>that is not my own, only the arm-wince-pe-gdc itself (and *-gcc and 
>>>*-g++) were built by me.  They are bundled with the compiler and have 
>>>worked for me.  It looks from the errors like the binutils are working 
>>>fine, they just can't turn x86 assembly into ARM machine code.
>> 
>> 
>> This is the with switch -v:
>> 
>> ansen at manni-lx:~/dd$ arm-wince-pe-gdc -v -c  hello_arm.d -o hello_arm
>> Using built-in specs.
>> Target: arm-wince-pe
>> Configured with: /gdc/18/configure --prefix=/usr/local/arm-wince-pe --disable-unix --with-newlib --enable-multilib=no --enable-languages=c,d,c++ --with-build-time-tools=/usr/local/arm-wince-pe/bin --with-as=/usr/local/arm-wince-pe/bin/arm-wince-pe-as --with-ld=/usr/local/arm-wince-pe/bin/arm-wince-pe-ld --with-sysroot=/usr/local/arm-wince-pe --target=arm-wince-pe --enable-phobos-config-dir=/usr/local/arm-wince-pe/phobos-config
>> Thread model: single
>> gcc version 4.0.3 (gdc 0.18, using dmd 0.149)
>>  /usr/local/arm-wince-pe/libexec/gcc/arm-wince-pe/4.0.3/cc1d hello_arm.d -quiet -dumpbase hello_arm.d -auxbase-strip hello_arm -version -o /tmp/ccJ0gw9a.sGNU D version 4.0.3 (gdc 0.18, using dmd 0.149) (arm-wince-pe)
>>         compiled by GNU C version 4.0.3 (Ubuntu 4.0.3-1ubuntu5).
>> GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64021
>>  as -o hello_arm /tmp/ccJ0gw9a.s
>> /tmp/ccJ0gw9a.s: Assembler messages:
>> /tmp/ccJ0gw9a.s:6: Error: junk at end of line, first unrecognized character is `@'
>> /tmp/ccJ0gw9a.s:7: Error: junk at end of line, first unrecognized character is `@'
>> /tmp/ccJ0gw9a.s:8: Error: too many memory references for `mov'
>> /tmp/ccJ0gw9a.s:9: Error: no such instruction: `stmfd sp!,{fp,ip,lr,pc}'
>> /tmp/ccJ0gw9a.s:10: Error: too many memory references for `sub'
>> /tmp/ccJ0gw9a.s:11: Error: no such instruction: `bl __gccmain'
>> /tmp/ccJ0gw9a.s:12: Error: expecting operand after ','; got nothing
>> /tmp/ccJ0gw9a.s:13: Error: too many memory references for `mov'
>> /tmp/ccJ0gw9a.s:14: Error: no such instruction: `ldmfd sp,{fp,sp,pc}'
>> 
>> On my debian system i have made a softlink from /usr/bin/as to 
>> /usr/local/arm-wince-pe/bin/arm-wince-pe-as 
>> 
>> Then it was possible to compile an object file.
>> I have delete the softlink and it is also posslible to make a 
>> object file. I dont't now why?
>> Here is the output:
>> n at localhost:~$ arm-wince-pe-gdc -v  hello_arm.d -o hello_arm
>> Es werden eingebaute Spezifikationen verwendet.
>> Lesen der Spezifikationen von /usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib/libgphobos.spec
>> Spezifikation wird von lib nach liborig umbenannt
>> Ziel: arm-wince-pe
>> Konfiguriert mit: /gdc/18/configure --prefix=/usr/local/arm-wince-pe --disable-unix --with-newlib --enable-multilib=no --enable-languages=c,d,c++ --with-build-time-tools=/usr/local/arm-wince-pe/bin --with-as=/usr/local/arm-wince-pe/bin/arm-wince-pe-as --with-ld=/usr/local/arm-wince-pe/bin/arm-wince-pe-ld --with-sysroot=/usr/local/arm-wince-pe --target=arm-wince-pe --enable-phobos-config-dir=/usr/local/arm-wince-pe/phobos-config
>> Thread-Modell: single
>> gcc-Version 4.0.3 (gdc 0.18, using dmd 0.149)
>>  /usr/local/arm-wince-pe/libexec/gcc/arm-wince-pe/4.0.3/cc1d hello_arm.d -quiet -dumpbase hello_arm.d -auxbase hello_arm -version -o /tmp/ccMvNpIe.s
>> GNU D version 4.0.3 (gdc 0.18, using dmd 0.149) (arm-wince-pe)
>>         compiled by GNU C version 4.0.3 (Ubuntu 4.0.3-1ubuntu5).
>> GGC-Heuristik: --param ggc-min-expand=47 --param ggc-min-heapsize=31989
>>  /usr/local/arm-wince-pe/bin/arm-wince-pe-as -o /tmp/ccuCDAcn.o /tmp/ccMvNpIe.s
>>  /usr/local/arm-wince-pe/libexec/gcc/arm-wince-pe/4.0.3/collect2 -Bdynamic -o hello_arm /usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib/crt0.o /usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib/crtst.o -L/usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3 -L/usr/local/arm-wince-pe/lib/gcc/arm-wince-pe/4.0.3/../../../../arm-wince-pe/lib -L/usr/local/arm-wince-pe/lib -L/usr/local/arm-wince-pe/usr/lib /tmp/ccuCDAcn.o -lgphobos -lm -lcegcc -lgcc -lm -lcoredll -lcegcc -lgcc
>> collect2: �ld� kann nicht gefunden werden
>> 
>> I looks much better.
>> Only one problem with collect2 .
>> 
>> 
>> Manfred
>> 
> 
> Ah it seems to be the opposite of what I though, it is using an x86 
> assembler to assemble ARM code.  Notice that in the top log it invokes 
> 'as' instead of /usr/local/arm-wince-pe/bin/arm-wince-pe-as.  In the 
> bottom log it seems to be unable to find 'ld', when it should be using 
> arm-wince-pe-ld.
> 
> I am wondering if it can't find the files in */bin for some reason, and 
> ends up falling back on the local system files that are used for x86.  I 
> also have a hunch this could be something to do with permissions.
> 
> If you don't need to restrict access to the compiler, try this:
> 
> cd /usr/local
> chmod -R a=rwx arm-wince-pe
> 
> Then try compiling.

Thank you, i have successfully compiled the first programm.

I have compiled your example wich write the file doutput.txt .
This programm have i copied to the sd Card and rename the programm to
Hello_arm.exe .

But it do nothing on my PDA.
My PDA is a YAKUMO with Windows mobile 4.2 .
The CPU is S3C2410 it should be compatible with ARM920T .

I have read i must copy the programm with Active Sync or i must 
build a "cab" file?

Manfred

  



More information about the D.gnu mailing list