| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#1
|
| When migrating from Unix and Ingres II 2.5 to Linux and Ingres version 9.02 the following error occurred when trying to build an image : "Building runnable image of gryl00010aqep . . . seterr.obj: In function `seterr': seterr.c .text+0xe):undefined reference to `iiseterr' collect2: ld returned 1 exit status E_AB0020 Link failed The link failed with status '69891'. This could mean either that the linker could not be run or that it ran and returned an error. E_AI0002 The application image was NOT built. An earlier error prevents the application image from being built. Correct the cause of the earlier error and then run imageapp again." Specs which it was tested on and it occurs : Ingres II 9.2.0 (int.lnx/118)NPTL openSUSE 11.0 (i586) Ingres II 9.2.0 (int.lnx/118)NPTL CentOS release 5.2 (Final) First I thought that it was linux related but the same error occurred on Unix and an old ingres version: Ingres II 2.0/9808 (usl.us5/00) 5 7.1.1 i386 x86at SCO UNIX_SVR5 However using the following specs the error does not appear and linking succeeds : Specs where there was no problem : Ingres II 2.5/0011 SCO_SV 3.2 5.0.7 i386 Ingres II 2.5/0011 SCO_SV 3.2 5.0.5 i386 Ingres II 2.0/0308 (hpb.us5/00) HP-UX 11.00 The problem lies in calling the 'iiseterr' function.Apparently, the linker on the machines with the problem cannot find a reference to it. The related entry in the manual (r3 Documentation, Forms-based Application Development Tools, User Guide Runtime Error Processing M– 3, Using iiseterr() in Ingres Applications,page 1243) is : seterr () { extern int myhandler(); iiseterr (myhandler); return; } In examining some C header (eqpname.h in particular) files I've noticed that all references to iiseterr were IIseterr. Subsequently changing the entry to IIseterr solved the problem, the linking succeeded plus it did not break the specs that had no problem to begin with. So the correct entry which works universally is : seterr () { extern int myhandler(); IIseterr (myhandler); return; } The question is why the same entry in some cases breaks and in some not? |
![]() |
| Thread Tools | |
| Display Modes | |