2
votes

I am trying to build static libraries with the hopes of creating a portable executable. I was successful at building dynamic libraries using the following tutorial:

https://zahidhasan.wordpress.com/2013/02/16/how-to-install-opencv-on-windows-7-64bit-using-mingw-64-and-codeblocks/

I am essentially repeating the process, but with BUILD_SHARED_LIBS = OFF.

I build in CodeBlocks and it fails. The Build messages I get are a series of variations of the following (varying in d00xxxxxx):

C:\TDM-GCC-64\bin..\lib\gcc\x86_64-w64-mingw32\4.9.2\libstdc++.dll.a(d002386.o)|| first defined here|

The Build log shows:

C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2\libstdc++.a(sstream-inst.o):sstream-inst.cc:(.text$_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev[_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev]+0x0): multiple definition of std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()' C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/libstdc++.dll.a(d002386.o):(.text+0x0): first defined here C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2\libstdc++.a(sstream-inst.o):sstream-inst.cc:(.text$_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv[_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv]+0x0): multiple definition ofstd::basic_stringbuf, std::allocator >::str() const' C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/libstdc++.dll.a(d000413.o):(.text+0x0): first defined here

Both of these repeat for the maximum allowed 50 errors.

Any help would be greatly appreciated.

1
I would try to see what happens starting from a clean build directory, and activating static library building from the beginning: your problem might be caused by some leftovers of the dynamic library build process. - Antonio
My apologies if it was unclear. I have done that. I also tried building from the command line with mingw32-make instead of using codeblocks. It looks like it is trying to build compiler libraries as well, specifically 'libstdc++'. Is this normal? - Langleson
It looks like a compiler/linker bug to me... Where did you download it? - Antonio
You could try this sourceforge.net/projects/mingw-w64/files/… By the way, are you targetting 32 or 64 architecture? - Antonio
I can't recall where I downloaded the compiler, I tried a couple until I found one that looked legit. I settled for what appears to be a TDM installer for mingw. I am targeting a 64bit system, but may also want the ability to port to 32 bit. - Langleson

1 Answers

0
votes

It looks like a compiler/linker bug to me...

You could try the toolchain available here. (Note: this link might be soon become outdated, so in general use the link below and browse to the most recent version)

And in general at http://sourceforge.net/projects/mingw-w64/files/ where you can also find toolchains targeting 32bit architectures.