/d/PCem/src$ gcc -v
Using built-in specs.
COLLECT_GCC=D:\msys\mingw\bin\gcc.exe
COLLECT_LTO_WRAPPER=d:/msys/mingw/bin/../libexec/gcc/i686-w64-mingw32/4.8.1/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../source/gcc-4.8.1/configure --build=x86_64-unknown-linux-gnu --target=i686-w64-mingw32 --host=i686-w64-mingw32 --disable-shared --enable-static --disable-nls --disable-multilib --prefix=/home/hendrik/mingw/target/mingw-w64-i686 --with-sysroot=/home/hendrik/mingw/target/mingw-w64-i686 --with-mpc=/home/hendrik/mingw/target/packages/gcc/packages/mpc/mpc-1.0.1-x86_64 --with-mpfr=/home/hendrik/mingw/target/packages/gcc/packages/mpfr/mpfr-3.1.2-x86_64 --with-gmp=/home/hendrik/mingw/target/packages/gcc/packages/gmp/gmp-5.1.2-x86_64 --with-host-libstdcxx='-lstdc++ ' --with-cloog=/home/hendrik/mingw/target/packages/gcc/packages/cloog/cloog-0.18.0-x86_64 --with-isl=/home/hendrik/mingw/target/packages/gcc/packages/isl/isl-0.11.1-x86_64 --enable-languages=c,c++ --enable-threads=win32 --enable-fully-dynamic-string
Thread model: win32
gcc version 4.8.1 (GCC)
/d/PCem/src$ ld --version
GNU ld (GNU Binutils) 2.23.2
Copyright 2012 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
What would be nice is a pcem build that requires no external dll's but the main problem is ppl not including them in builds (not sure the real reason why) distributing it with out the dlls is useless you may as well not bother at all as its very version dll specific you cant just get them from the internet and expect it to work. unless you have the mingw dirs in your system path (worst thing you can ever do)
Last edited by therock247uk on Tue 18 Nov, 2014 3:36 am, edited 1 time in total.
therock247uk wrote:What would be nice is a pcem build that requires no external dll's but the main problem is ppl not including them in builds (not sure the real reason why) distributing it with out the dlls is useless you may as well not bother at all as its very version dll specific you cant just get them from the internet and expect it to work.
yeah.
For now I can link libalut statically as well (but it requires exporting symbols from EXE(which may look a bit odd) or modifying alut.h NOT to put anything in ALUT_API macro) so PCem will require openal32.dll only.
for odd-but-easy way, modifying soundopenal.c Adding:
It is documented on Vogons that newer versions of mingw/gcc will not build against static runtime libraries. Furthermore, statically compiling certain libraries will break multithreading operations. This is also documented.
truth wrote:It is documented on Vogons that newer versions of mingw/gcc will not build against static runtime libraries. Furthermore, statically compiling certain libraries will break multithreading operations. This is also documented.
The thing that confuses me about this is that my builds always have stdc++ and libgcc linked statically, and only OpenAL linked dynamically, using the same Makefile as everyone else. What am I doing differently?
The c/c++ runtimes may be dynamically linked but located in another directory than pcem (win32), such as the /bin directory of mingw which is typically a directory in the user's PATH. At least this is my experience with the newer gcc versions and I could verify again. I use gcc 4.6.x to avoid the issue. Further, the gcc 4.8.x has bugs, including the problem in defaulting to at least one parameter which breaks some existing software, the same software which builds correctly with older gcc versions.
I haven't tested the possibility of whether the runtimes are linking statically yet requiring a dynamic link, too (in the newer gcc versions). One method is to copy the files to a system without mingw and see if the expected error occurs.