From: Brendon C. <bc...@av...> - 2007-05-16 22:53:09
|
Thanks everyone for the help. Kai was correct, we do have two objects both of the same name both which I wish to store in the archive. I am unfortunately not trying to overwrite the general TimeStamp.o file with the Woe32 object, the code in the general object USES code from the Woe32 object so they both need to exist in the archive at the same time. Anyhow, I am surprised from what has been said that this actually does seem to work under UNIX. I think i will make sure that the object files have different file names and see if that fixes the problem. Thanks again for the help. Brendon. Keith MARSHALL wrote: > > > > Kai Tietz wrote, quoting Brendon Costa: >>> Does ar in MinGW have any known problems with multiple >>> invocations in order to add objects to an archive spread >>> over a few command line invocations? I.e. >>> >>> ar cru blah.a obj1.o >>> ar cru blah.a obj2.o >> No, ar has no problems that way. > > I'd have to confirm this; I've used it precisely this way, many > time, with absolutely no problems whatsoever. > >>> An example of what is going on is as follows: >>> >>> # Compile source to objects... >>> g++ compiles heaps of code.... >>> >>> # We then run the ar command for the first batch of files... >>> ar cru ./libs/libUtils.a ./libs/Timers/TimeStamp.o >>> ...many-other-objects... >>> >>> # Then we run ar a second time to add the rest of the objects: >>> ar cru ./libs/libUtils.a ./libs/System/Win32/TimeStamp.o >>> ...many-other-objects... >> The problem is here, that ar is not capable to store in archive >> full path names (-P option) as member name. Therefore the prior >> object is simply replaced. > > Hmm. I interpreted Brendon's problem differently; as I understood > it, *replacement* of the generic archive members with Woe32 specific > equivalents is the intended behaviour. If this is the case, then > the *real* problem is the `u' flag in the `ar' command line. > > Here's the scenario that Brendon is describing:-- > > - First, he compiles *all* his objects, spread across generic and > Woe32 specific subdirs. > > - Secondly, he invokes `ar' the first time, adding only the generic > objects to the archive. > > - Thirdly, he invokes `ar' a second time, to *replace* certain of > the generic objects with their Woe32 counterparts; unfortunately, > he gave the `u' flag, meaning that only objects added to the > archive *before* he generated the Woe32 objects will be replaced. > Since he generated all of the Woe32 objects *before* he created > the generic archive, *none* of those Woe32 objects can possibly > be newer than the addition time of their generic counterparts > to the archive, so *none* of the generics will be replaced. > >> So you may give one of your objects different names. > > If my interpretation is correct, then this solves nothing; the > solution is to remove the `u' flag from the `ar' command line. To > avoid unnecessary replacement of common modules, it may be necessary > to do this only for the Woe32 objects, but then there is a danger of > leaving Woe32 objects in place, if subsequently rebuilding for a > generic target, after a Woe32 build. IMO, this build system is > potentially fragile, and could benefit from an overhaul. > > Regards, > Keith. > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > > |