Cannot activate incremental link - please help

A

Alex Shturm

Hi,

I am trying to activate incremental link using VC7 (.NET 2003) on a pretty big
project (executable size is more than 100Mb, and it gets linked from several
dozen of libraries and object files of different sizes - from less than 1Mb to
tens of MBs).

The problem is that option /incremental:yes does not have any effect on the
link time. I observe that the linker removes existing executable and re-links
it from scratch.

I looked in the Usenet groups and found a couple of relevant e-mail threads:
http://groups.google.com/[email protected]#link1
http://groups.google.com/groups?q=i...=#[email protected]&rnum=1

So, as suggested, I tried to add /test to the link line to get the reason for
link's behavior. And this is the reason I've got:
LINK : LNK6003: LINK options changed; performing full link

The funny thing is that link options DID NOT change. I just added an empty
line to one of source files and run make with the same makefile (we don't use
IDE).

Maybe the reason for link's confusion is a very long link line (14K chars) ?

Anybody @ Microsoft, could you please let me know what I can do to enable
incremental link?

Thank you,
Alex
 
R

Rudy Ray Moore

Incremental linking doesn't work when you change a library in your
workspace.

Only expect incremental linking when you change *only* a file in your
"startup project." A change in any other project will trigger a full link.

Linking is so much slower in VS7.1/.net/c++/2003 that you really notice
those full links!

Chris
 
A

Alex Shturm

Actually we don't use the concept of "project" (in VS terms). We have a
lot of source files that are compiled and linked using command-line runs
of the compiler and linker, using make and makefile.

Non-incremental link takes about 10 min on a 2.5 GHz 1Gb RAM machine,
which makes development pretty painful.

In my experiment I've tried to change just one source file and run the
same make/makefile, so only one object file was recompiled (no libraries
were changed). Still the linker did not do incremental linking... :(

Alex
 
M

Matt Dillard

A follow-up to this older post, for future reference:
I experienced the same problem with a project I'm working on -
incremental linking would never kick in despite having the project
setting turned on, even when I made a trivial change to a non-library
cpp file. This is using VC++ 7.1.

In the project I was working on, I had the linker set up to ignore the
default library nafxcwd.lib, and then I explicitly added it to the
libraries to link against list. This was to prevent some "new" and
"delete" symbol conflicts in MFC's library and the C runtime library
(see Microsoft's Knowledge Base article Q148652 for more info).

I discovered that this caused the linker to think that project settings
had changed every single time it went to link. By changing the linker
settings to not ignore the default library nafxcwd.lib, the project
still linked successfully, and this time incrementally, as well. Note
that this means I was not exactly following Microsoft's recommended
practice in their KB article, but it still links and runs okay -
perhaps that KB article is geared toward an older version of their
linker.

Matt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top