Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7942 Discussions

LNK1169: one or more multiply defined symbols found

Alex_K_6
Beginner
3,532 Views
I'm trying to compile Firefox for Windows using the Intel compiler. I've managed to compile everything fine up until this point:
http://i44.tinypic.com/3010vue.png
From what I've gathered/been told, multiple copies of the CRT are being linked. I've tried setting the library to be used as the one given in -LIBPATH:C:\\Intel\\Composer XE 2011 SP1\\compiler\\lib\\intel64
but MINGW32 doesn't deal well with spaces and keeps returning errors.
So that didn't work. I'm not quite sure what else I can do?
If it helps I'm using the 30 day trial of Intel Composer XE 2011 SP1 Update 7.
0 Kudos
46 Replies
SergeyKostrov
Valued Contributor II
1,369 Views
Do you haveDirectX 9 or 10 on your computer?

The d3dx9_43.dll has to be inside of some cab-file in a '\Redist'folder.

PS: Try to search the web because "d3dx9_43.dll is missing" is a popular subject.
0 Kudos
Alex_K_6
Beginner
1,369 Views
Quoting TimP (Intel)
Evidently, your command line options are mixed up by the time you reach this point. The force and nodefaultlib options, if you really want them, must come after /link so that they pass on to the Microsoft tools. If you are looking for help with pymake, you're more likely to find it on a forum dealing with your variety of python. You've got a bewildering combination of forward and backslash conventions.

It occurs without -FORCE and -NODEFAULTLIB.

0 Kudos
Lingfeng_C_Intel
Employee
1,369 Views
Hi Alexboy, could you tell me thefirefox version you are working on? I am trying to recompile it here so that I can do some with you.

Thanks,
Wise
0 Kudos
Alex_K_6
Beginner
1,369 Views
Hello,

what I can see is that it fails because of the following command:

expand "" -F:d3dx9_43.dll "../../dist/bin"

I assume the build wanted to extract a file (d3dx9_43.dll) from a CAB archive. However the CAB archive is not specified (empty double quotes): ""

Could you take a look at the corresponding Makefile (C:\Users\Administrator\Downloads\objdir\gfx\angle\Makefile), line 143, and see what should have been enclosed in double quotes. Maybe some variable is not specified.
Under the line it looks to me like an external dependency that's not satisfied. Maybe you need to download some CAB archive and store it at a fixed location before kicking-off the build.

Best regards,

Georg Zitzlsberger

Do you have DirectX 9 or 10 on your computer?

The d3dx9_43.dll has to be inside of some cab-file in a '\Redist' folder.

PS: Try to search the web because "d3dx9_43.dll is missing" is a popular subject.

I have the DirectX SDK and d3dx9_43.dll installed where they should be. The build runs fine with MSVC. I tried to use -disable-angle but still get the same error.

Hi Alexboy, could you tell me thefirefox version you are working on? I am trying to recompile it here so that I can do some with you.

Thanks,
Wise

I'm trying to build Firefox 10 Beta 4. I tried Beta 3 and Firefox 9 Beta 6, but for some reason I get the same errors on all of them.

0 Kudos
Georg_Z_Intel
Employee
1,369 Views
Hello,

I've checked the Makefile from Firefox.
It needs $MOZ_D3DX9_CAB to be set. In your case it is not. This variable will be defined in the configure script via:

MOZ_D3DX9_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *d3dx9_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`

Looks like it cannot find the d3dx9_... CAB archive. This can be due to different versions or paths are not correct. Please print out this line when running configure and check what's wrong (why find tool cannot find the CAB archive file).

Alternative: Turn off WebGL (gfx/angle) component if you don't need it.

Best regards,

Georg Zitzlsberger
0 Kudos
Alex_K_6
Beginner
1,369 Views
Hello,

I've checked the Makefile from Firefox.
It needs $MOZ_D3DX9_CAB to be set. In your case it is not. This variable will be defined in the configure script via:

MOZ_D3DX9_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *d3dx9_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`

Looks like it cannot find the d3dx9_... CAB archive. This can be due to different versions or paths are not correct. Please print out this line when running configure and check what's wrong (why find tool cannot find the CAB archive file).

Alternative: Turn off WebGL (gfx/angle) component if you don't need it.

Best regards,

Georg Zitzlsberger

My mistake, I forgot to install the redistributables, but now I get the 1169 error, right before the end of compiling the whole program:

0 Kudos
Lingfeng_C_Intel
Employee
1,369 Views
Thanks Alexboy, I am trying to download the package and build it here. Will be back for you.
0 Kudos
Alex_K_6
Beginner
1,369 Views
Thanks Alexboy, I am trying to download the package and build it here. Will be back for you.

Hope it goes well. Thanks!
0 Kudos
SergeyKostrov
Valued Contributor II
1,369 Views
>>...
>>...failed, return code 1169
>>...

It looks like LNK1169, but without LNK prefix! I think it was returned from Python2.7.exe.

If you look a couple of lines above there is a realLNK1169 error. Then, above that there is LNK4098, and
above that there is LNK2005.

Have you seen these LNK errors?

Best regards,
Sergey
0 Kudos
Alex_K_6
Beginner
1,369 Views
>>...
>>...failed, return code 1169
>>...

It looks like LNK1169, but without LNK prefix! I think it was returned from Python2.7.exe.

If you look a couple of lines above there is a realLNK1169 error. Then, above that there is LNK4098, and
above that there is LNK2005.

Have you seen these LNK errors?

Best regards,
Sergey

I've seen the errors, still get them unfortunately.

0 Kudos
SergeyKostrov
Valued Contributor II
1,369 Views
Let's go over these linker errors:

- LNK1169 - One or more multiply defined symbols found
- LNK4098 - Defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library
- LNK2005 - Symbol already defined in object

You could get more technical details for these errors fromMSDN.

My recommendations are as follows:

- Create a master list of ALLlibraries ( *.lib ) referenced in Make files, etc.

-Search all sources for #pragma comment ( lib, ... ) directives. If something is found update the
master list of ALL libraries.

- Don't try to resolve ALL problems at the same time. In your caselinker errorshave to be solved in the
following order ( based on a recent screenshot ):

LNK2005
LNK4098
LNK1169

- Redirect a Build output to a txt-file, then print it, and carefully go through every line.Make sure that
during that process nobody interrupts you.

- Uploading screenshots is a good way to show some problems but I would prefer to see a complete Build
output redirected to a txt-file.

- Uploading Make files would also help ( don't miss anything ).

- Try to understand what is going on with 'Expand.exe' command line utility. Did you try to execute it
from a folder where you start your Build process?

- Try to simulate some linker errors in a small project in order to understand completely howthey could be
fixed or resolved.

- Did you try to contact Firefox software developers?

Best regards,
Sergey
0 Kudos
Alex_K_6
Beginner
1,369 Views
Let's go over these linker errors:

- LNK1169 - One or more multiply defined symbols found
- LNK4098 - Defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library
- LNK2005 - Symbol already defined in object

You could get more technical details for these errors fromMSDN.

My recommendations are as follows:

- Create a master list of ALLlibraries ( *.lib ) referenced in Make files, etc.

-Search all sources for #pragma comment ( lib, ... ) directives. If something is found update the
master list of ALL libraries.

- Don't try to resolve ALL problems at the same time. In your caselinker errorshave to be solved in the
following order ( based on a recent screenshot ):

LNK2005
LNK4098
LNK1169

- Redirect a Build output to a txt-file, then print it, and carefully go through every line.Make sure that
during that process nobody interrupts you.

- Uploading screenshots is a good way to show some problems but I would prefer to see a complete Build
output redirected to a txt-file.

- Uploading Make files would also help ( don't miss anything ).

- Try to understand what is going on with 'Expand.exe' command line utility. Did you try to execute it
from a folder where you start your Build process?

- Try to simulate some linker errors in a small project in order to understand completely howthey could be
fixed or resolved.

- Did you try to contact Firefox software developers?

Best regards,
Sergey

Well the makefiles don't say which libs specifically are called. But this error is caused by libraries being linked in the wrong order, which is weird because the msvc compiler doesn't have a problem but icc does. So following this page:

http://msdn.microsoft.com/en-us/library/6wtdswk0%28v=vs.100%29.aspx

-NODEFAULTLIB:libc.lib -NODEFAULTLIB:libcmt.lib -NODEFAULTLIB:libcd.lib -NODEFAULTLIB:libcmtd.lib -NODEFAULTLIB:msvcrtd.lib

Which SHOULD sort the error out but doesn't.

If I try sorting out LNK2005 like it says here:

http://msdn.microsoft.com/en-us/library/72zdcz6f%28v=vs.100%29.aspx

Nothing changes

and if I try LNK4098/1169 using NODEFAULTLIB it still produces the EXACT same error. *Sigh*.

I haven't tried /INCREMENTAL but I'm not sure what options I should be using for it.

http://msdn.microsoft.com/en-us/library/4khtbfyf%28v=vs.100%29.aspx

0 Kudos
SergeyKostrov
Valued Contributor II
1,369 Views
Quoting alexboy94
...
I haven't tried
/INCREMENTAL but I'm not sure what options I should be using for it.
...

I wouldn't try to change it.

Do you have any response from a Firefox community?

Best regards,
Sergey
0 Kudos
Alex_K_6
Beginner
1,369 Views
Quoting alexboy94
...
I haven't tried
/INCREMENTAL but I'm not sure what options I should be using for it.
...

I wouldn't try to change it.

Do you have any response from a Firefox community?

Best regards,
Sergey

Oh yes sorry I forgot to post the link to that

http://groups.google.com/group/mozilla.dev.builds/browse_thread/thread/b6b4ec0bdc9534a3#

The main points:

As I already noted, these errors are caused by you linking multiple
copies of the C runtime. You are linking both the dynamic version
(msvcrt) and the static version (libcmt). You need to figure out why
both copies of the CRT are being pulled into your project.

Which would be solved easily with -NODEFAULTLIB except:

It appears that the Intel linker you're using doesn't support a MSVC
feature in use (the -NODEFAULTLIB flag);

For some reason, -link isn't accepted as a valid flag but -Xlinker is, but it's still an 'unknown' option.
0 Kudos
SergeyKostrov
Valued Contributor II
1,369 Views
I've just checked an image from Post #19 andthis is what I found:

...
icl: command line warning #10006: ignoring unknown option '/NODEFAULTLIB:LIBCMT'
...

What to do now? Could somebody from Intel give an advice?

Best regards,
Sergey
0 Kudos
Alex_K_6
Beginner
1,369 Views
I've just checked an image from Post #19 andthis is what I found:

...
icl: command line warning #10006: ignoring unknown option '/NODEFAULTLIB:LIBCMT'
...

What to do now? Could somebody from Intel give an advice?

Best regards,
Sergey

That's what I'm wondering as well. Really it should be done like this:

'-link -nodefaultlib:libcmt'

But for some reason -link is an invalid flag and when using the linux version of that flag (Xlinker) it just says ignoring unknown option.

0 Kudos
Lingfeng_C_Intel
Employee
1,369 Views
Hi Alexboy,
How do you setup icl environment in mozilla-build environment? I tried to run compilervar.bat is32 vs2008 under $ of mozilla-build command line, but failed.
0 Kudos
Lingfeng_C_Intel
Employee
1,369 Views
Hi Alexboy,

In these days, I searched google and found there is article to introduce how to build firefox with icc in this URL http://code.google.com/p/pcxfirefox/. But when I tried to build it with icc after patch, I got below error message:
...
checking for windres... no
checking for midl... midl
configure: error: The linker major version, , does not match the compiler suiteversion, 11.
*** Fix above errors and then restart with "make -f client.mk build"
make[2]: *** [configure] Error 1
make[2]: Leaving directory `/c/mozilla-central'
make[1]: *** [obj-i686-pc-mingw32/Makefile] Error 2
make[1]: Leaving directory `/c/mozilla-central'
make: *** [build] Error 2

Do you have this kind of experience?

Thanks,
Wise
0 Kudos
Lingfeng_C_Intel
Employee
1,369 Views
Following URL guide information, I can config icl make&configure. And I met the same issue with Alex duing build firefox with icl.
0 Kudos
SergeyKostrov
Valued Contributor II
1,281 Views
Hi Wise,

Could you provide a brief summary of ALL your errors? Are you going to work on the problem for some time?

Best regards,
Sergey
0 Kudos
xunxun
Beginner
1,281 Views
It's strange.

pcxfirefox is my one project, and I use my wiki guide to build firefox 10 successfully.


--------------------------------------------------------------------------------------------------------------
You can try

https://pcxfirefox.googlecode.com/files/Firefox-10.0-en-pcx-win32-120202-icc12-sse3-betterpgo.7z

https://pcxfirefox.googlecode.com/files/Firefox-10.0-en-pcx-win64-120204-icc12-sse3-betterpgo.7z
--------------------------------------------------------------------------------------------------------------

Maybe our icl edition is different, can you provide your modification (mozconfig/patches/start-icc.bat)?
0 Kudos
Reply