This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, We got dll's using GCC compiled with arm-wince-pe working last year. The main trick is that the "-shared" option does not work correctly for the arm-wince-pe target. With the help of Kai Ruotto (on crossgcc) we arrived at the conclusion that a special 5 step linking process is required to create dll's with the relocations done properly on arm-wince-pe. I have attached an example (with an all-important "project.mk") that shows you how to do the link so that the result will run on wince. This example creates a "Hello World" type of thing that can function as a JNI component for java. We hope this helps you. Also, a fully operational toolchain for arm-wince-pe (gcc-3.2/binutils2.13) is available "ready-to-run" for x86linux (RedHat 7.1+). Just make sure you have "-march" set for your platform. You can get the toolchain from this url: http://www.atomiser.org/open_source_wince/wincegcc031303.tar.bz2 This toolchain will build an operational dll from the sources I've attached. regards, craig vanderborgh voxware incorporated On Wed, 2003-03-26 at 01:14, longchuan wrote: > hello all: > > I had built a cross compiler host=mingw32, target=arm-pe and now i have > a problem of create shared > dll.(binutils-2.13-20020903-1-src.tar.gz,gcc-3.2-20020817-1.src.tar.gz > from mingw) > > 1. > test.def > ------------------------ > LIBRARY test.dll > EXPORTS > _TestFunc > ---------------------------- > building > dlltool -d test.def -e test.exp -C -D test.dll -l test.lib -f > -mcpu=arm7dmi -f -march=armv4 > 2. > test.c > ------------------------ > int _DllMainCRTStartup(int pPcb, int op, void* arg3) {return 1;} > > void TestFunc() {return;} > ------------------------ > building > gcc -O0 -c -fno-exceptions -fno-rtti -fms-extensions -w > -falign-functions=4 -mcpu=arm7dmi -march=armv4 test.c > > 3. using ld to create dll > ld --dll --subsystem console --entry __DllMainCRTStartup -Map > test.map --image-base 0x10000000 -o test.dll test.exp test.o > > But this dll doesn't have relocation table > > objdump -x test.dll > test.dll: file format pei-arm-little > test.dll > architecture: armv4, flags 0x00000132: > EXEC_P, HAS_SYMS, HAS_LOCALS, D_PAGED > start address 0x10001000 > > Characteristics 0x6607 > relocations stripped // no relocations information > executable > line numbers stripped > debugging information removed > DLL > [snip] > > I could do the same job with mingw32 gcc for win32, just two > differences: > a) at step 1,omit the leading underscore for TestFunc in def file; > b) at step 3, add -shared option for ld.exe > and this dll has relocation information. > Document said that -shared option of ld is" Create a shared library. > This is currently only supported on ELF, XCOFF and SunOS platforms...." > , i am not sure whether it support arm-pe configuration. > when give -shared option to my arm-pe gcc, ld reports: > Cannot export TestFunc: symbol not found > Cannot export _DllMainCRTStartup: symbol not found > > Any ideas about this situation? > TIA > wreckor > > > ------ > Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ > Want to unsubscribe? Send a note to crossgcc-unsubscribe at sources dot redhat dot com
Attachment:
gnuwince-jnidll.tar.bz2
Description: application/bzip
------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe at sources dot redhat dot com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |