[Developers] Link order of libraries
arnima at hafro.is
Sat May 2 05:41:23 PDT 2009
On Thu, 30 Apr 2009, Hans Julius Skaug wrote:
> I do not know the "correct" way of linking in the libraries, but I can
> confirm that ado32.lib adt32.lib admod32.lib adf1b2o.lib was the order
> Dave used previously for the Borland version.
I see. Here are the scripts I have access to:
ADMB 5.0.1 for Borland 5.5, lnkadmb.bat (12-Feb-1999):
admod32.lib adt32.lib ado32.lib
ADMB 9.0.202 for Borland 5.5, lnkadmb.bat (15-Apr-2009):
df1b2stub.lib admod32.lib adt32.lib ado32.lib
ADMB 9.0.202 for Borland 5.5, lnkadmb-re.bat (15-Apr-2009):
df1b2o.lib admod32.lib adt32.lib ado32.lib
So for over 10 years, the Borland order has been [df1b2]-mod-t-o, and as
far as I can tell, the Microsoft and GCC scripts have also been
[df1b2]-mod-t-o through the years.
Now, Jason bas pointed out that o-t-mod-df1b2 works better for Borland
random effects, and Hans has seen this order somewhere before.
Johnoel and I are going to update the user scripts, so the question is
1. Change only Borland lnkadmb-re.bat to o-t-mod-df1b2, following Jason's
finding. Everything works, and it doesn't really matter why.
2. Change only Borland lnkadmb-re.bat to mod-t-o-df1b2. This creates a
larger executable, presumably because more functions are defined.
3. Change all Borland lnkadmb*.bat to o-t-mod-df1b2 or mod-t-o-df1b2.
Perhaps Borland's rule for linking libraries is the opposite of GCC. The
GCC rule is to read aloud "uses functions defined in" between the
That's why I thought the original order df1b2-mod-t-o makes sense: RE uses
ADMB uses AUTODIF.
4. Investigate this further, hopefully understanding why the GCC scripts
repeat the libraries twice: df1b2-mod-t-o-df1b2-mod-t-o. Whey does GCC
need repeating, if Borland and Microsoft don't? Being a GCC user myself, I
find this even more interesting than the Borland issue.
More information about the Developers