Author Topic: Cross-compiling: Linux to Windows  (Read 5936 times)

0 Members and 2 Guests are viewing this topic.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #35 on: December 18, 2016, 11:09:14 AM »
Thank you very much for that: that is most helpful. The problem apparently was a bug in MinGW causing windres to default to 64-bit: I had to apply the fix here to make it work.

I now get this error on trying to build/link:

Code: [Select]
===> RES simres.rc
===> LD  build/mingw/simutrans-experimental
/usr/bin/i686-w64-mingw32-ld: cannot find -lpthreadGC2
collect2: error: ld returned 1 exit status
common.mk:21: recipe for target 'build/mingw/simutrans-experimental' failed
make: *** [build/mingw/simutrans-experimental] Error 1

Edit: I have managed to fix that by replacing -lpthreadGC2 with -lpthread, but I now get this large set of linker errors:

Code: [Select]
===> LD  build/mingw/simutrans-experimental
build/mingw/besch/reader/image_reader.o:image_reader.cc:(.text+0x1bf): undefined reference to `adler32'
build/mingw/besch/reader/image_reader.o:image_reader.cc:(.text+0x1d8): undefined reference to `adler32'
build/mingw/boden/grund.o:grund.cc:(.text+0x9c6a): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/boden/grund.o:grund.cc:(.text+0xb91e): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x2398): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x24ab): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x25bc): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x43dc): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x43fc): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x46f2): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x4972): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/boden/wege/weg.o:weg.cc:(.text+0x5002): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0x49): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0x75): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0x96): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0xb3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0x16b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0x18e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/freelist.o:freelist.cc:(.text+0x19b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x28): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x77): undefined reference to `BZ2_bzWrite@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x87): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xad): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xee): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x11e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x12b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x138): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x147): undefined reference to `_imp__pthread_cond_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x190): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1e0): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x206): undefined reference to `gzwrite'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x23a): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x272): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3b2): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3c8): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3df): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3ec): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x40c): undefined reference to `_imp__pthread_join'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x412): undefined reference to `_imp__pthread_mutex_destroy'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x431): undefined reference to `_imp__pthread_barrier_destroy'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x46d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4f0): undefined reference to `_imp__pthread_barrier_init'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4f6): undefined reference to `_imp__pthread_mutex_init'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x52f): undefined reference to `_imp__pthread_attr_init'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x540): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x567): undefined reference to `_imp__pthread_create'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x570): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5c1): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5e2): undefined reference to `gzeof'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5f6): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x60f): undefined reference to `gzeof'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x62b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x75e): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x7dd): undefined reference to `gzwrite'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x80e): undefined reference to `BZ2_bzWrite@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x8be): undefined reference to `BZ2_bzReadClose@8'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x95d): undefined reference to `gzerror'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x986): undefined reference to `gzclose'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xa15): undefined reference to `BZ2_bzWriteClose@20'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xada): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xaf8): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xb0f): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xb1c): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xb44): undefined reference to `_imp__pthread_join'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xb4a): undefined reference to `_imp__pthread_mutex_destroy'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xb69): undefined reference to `_imp__pthread_barrier_destroy'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xc0b): undefined reference to `gzerror'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xc2f): undefined reference to `gzclose'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xcf6): undefined reference to `BZ2_bzReadClose@8'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xd61): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xdfd): undefined reference to `BZ2_bzWriteClose@20'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xeb4): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xedb): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xf0d): undefined reference to `BZ2_bzWrite@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0xf38): undefined reference to `gzwrite'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1019): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1026): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x104b): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1058): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x10ed): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x116e): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x11bd): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1243): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1250): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1275): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1282): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1363): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1370): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1395): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x13a2): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1458): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x14ad): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x14ed): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x151d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1537): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x15c2): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x15ee): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1617): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1647): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1704): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1711): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1736): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1743): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x184f): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x185c): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1881): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x188e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x197b): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1a67): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1aa1): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1acf): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1b4c): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1c24): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1c31): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1c56): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1c63): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1d53): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1d60): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1d85): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1d92): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1e98): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1eb9): undefined reference to `gzeof'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1ecb): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1f43): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1f50): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1f74): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1f50): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1f74): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x1f81): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2099): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x20f9): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x212d): undefined reference to `gzeof'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x21ab): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2207): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2251): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x228d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x22bd): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2384): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2391): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x23b6): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x23c3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2465): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x249d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x25c0): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2717): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2724): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2751): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x275e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x27cd): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2802): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x282c): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2948): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x296b): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2978): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x29a5): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x29b2): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2a41): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2aa3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2bf7): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2c20): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2c2d): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2c5a): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2c67): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2d39): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2d93): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x2f82): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x30ce): undefined reference to `BZ2_bzWrite@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x30f9): undefined reference to `gzwrite'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x310f): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x32f3): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3317): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3324): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3351): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x335e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x34b9): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3517): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x363d): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x366d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x367a): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x36a7): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x36b4): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x373d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3788): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x38d8): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x38e5): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3912): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x391f): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x398d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x39c2): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x39ec): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3b2c): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3b5d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3b6a): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3b97): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3ba4): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3c6d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3cb8): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3e4a): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x3ff2): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4045): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4052): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4077): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4084): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x42d3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4454): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4461): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4486): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4493): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x45cd): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x46ce): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4918): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4d94): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4da1): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4dce): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4ddb): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4e5d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4ec0): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x4ef2): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5097): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x50a4): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x50c9): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x50d6): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x516d): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x51b5): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x51c2): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x51e6): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x51f3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x52f8): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5305): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x532a): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5337): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x542c): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x54fe): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x557f): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x55b2): undefined reference to `gzread'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x55e1): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x564b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x569a): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x56e1): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5a26): undefined reference to `gzopen'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5a4e): undefined reference to `gzgets'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5bc4): undefined reference to `BZ2_bzReadOpen@24'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x5e95): undefined reference to `BZ2_bzRead@16'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x6113): undefined reference to `BZ2_bzWriteOpen@20'
build/mingw/dataobj/loadsave.o:loadsave.cc:(.text+0x641e): undefined reference to `gzopen'
build/mingw/dataobj/powernet.o:powernet.cc:(.text+0xee): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/powernet.o:powernet.cc:(.text+0x121): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/powernet.o:powernet.cc:(.text+0x20f): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/powernet.o:powernet.cc:(.text+0x249): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/dataobj/powernet.o:powernet.cc:(.text+0x2d5): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/dataobj/powernet.o:powernet.cc:(.text+0x30e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/bruecke.o:bruecke.cc:(.text+0x6f7): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/bruecke.o:bruecke.cc:(.text+0x80b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/bruecke.o:bruecke.cc:(.text+0x6f7): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/bruecke.o:bruecke.cc:(.text+0x80b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/bruecke.o:bruecke.cc:(.text+0x163c): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/bruecke.o:bruecke.cc:(.text+0x165c): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/crossing.o:crossing.cc:(.text+0x4b2): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/crossing.o:crossing.cc:(.text+0x4cc): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/crossing.o:crossing.cc:(.text+0x957): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/crossing.o:crossing.cc:(.text+0x97c): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/crossing.o:crossing.cc:(.text+0xcc0): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/crossing.o:crossing.cc:(.text+0xcda): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/crossing.o:crossing.cc:(.text$_ZN10crossing_t12check_seasonEb[__ZN10crossing_t12check_seasonEb]+0x3b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/crossing.o:crossing.cc:(.text$_ZN10crossing_t12check_seasonEb[__ZN10crossing_t12check_seasonEb]+0x55): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x194): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x19a): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x1cd): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x1d3): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x249): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x269): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x2002): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x2041): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x2061): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/gebaeude.o:gebaeude.cc:(.text+0x208f): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/label.o:label.cc:(.text+0x426): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/label.o:label.cc:(.text+0x4d5): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/leitung2.o:leitung2.cc:(.text+0x22eb): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/leitung2.o:leitung2.cc:(.text+0x2308): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/leitung2.o:leitung2.cc:(.text+0x25cf): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/leitung2.o:leitung2.cc:(.text+0x260b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/leitung2.o:leitung2.cc:(.text+0x282f): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/leitung2.o:leitung2.cc:(.text+0x286b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/roadsign.o:roadsign.cc:(.text+0x1325): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/obj/roadsign.o:roadsign.cc:(.text+0x1525): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/obj/roadsign.o:roadsign.cc:(.text+0x168d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/obj/tunnel.o:tunnel.cc:(.text+0x842): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/tunnel.o:tunnel.cc:(.text+0xbb9): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/wayobj.o:wayobj.cc:(.text+0x1d92): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/obj/wayobj.o:wayobj.cc:(.text+0x1e30): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/obj/wayobj.o:wayobj.cc:(.text+0x2033): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x2e8d): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x2edf): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x2f37): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x2f7a): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x3986): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x3d5e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x3d9b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x1214b): undefined reference to `_imp__pthread_mutex_init'
build/mingw/display/simgraph16.o:simgraph16.cc:(.text+0x126eb): undefined reference to `_imp__pthread_mutex_destroy'
build/mingw/display/simview.o:simview.cc:(.text+0x4d9): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simview.o:simview.cc:(.text+0x4e2): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/display/simview.o:simview.cc:(.text+0x4ee): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simview.o:simview.cc:(.text+0x703): undefined reference to `_imp__pthread_cond_wait'
build/mingw/display/simview.o:simview.cc:(.text+0xa41): undefined reference to `_imp__pthread_cond_wait'
build/mingw/display/simview.o:simview.cc:(.text+0xa9a): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simview.o:simview.cc:(.text+0xaa3): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/display/simview.o:simview.cc:(.text+0xaaf): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simview.o:simview.cc:(.text+0xac7): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/display/simview.o:simview.cc:(.text+0x12f2): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simview.o:simview.cc:(.text+0x1306): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/display/simview.o:simview.cc:(.text+0x1313): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simview.o:simview.cc:(.text+0x13d4): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simview.o:simview.cc:(.text+0x14f9): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/display/simview.o:simview.cc:(.text+0x1584): undefined reference to `_imp__pthread_cond_wait'
build/mingw/display/simview.o:simview.cc:(.text+0x164a): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/display/simview.o:simview.cc:(.text+0x1657): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/display/simview.o:simview.cc:(.text+0x168b): undefined reference to `_imp__pthread_cond_broadcast'
build/mingw/display/simview.o:simview.cc:(.text+0x1697): undefined reference to `_imp__pthread_cond_wait'
build/mingw/display/simview.o:simview.cc:(.text+0x19d6): undefined reference to `_imp__pthread_attr_init'
build/mingw/display/simview.o:simview.cc:(.text+0x19e7): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/display/simview.o:simview.cc:(.text+0x19f4): undefined reference to `_imp__pthread_barrier_init'
build/mingw/display/simview.o:simview.cc:(.text+0x1a70): undefined reference to `_imp__pthread_create'
build/mingw/display/simview.o:simview.cc:(.text+0x1b50): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/display/simview.o:simview.cc:(.text+0x211b): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/player/simplay.o:simplay.cc:(.text+0x20b4): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x20e8): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x379e): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x37d5): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3828): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x385f): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3bba): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3bf1): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3c3b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3c72): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3cb7): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3cef): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3ed1): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/player/simplay.o:simplay.cc:(.text+0x3f08): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0x1f53): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0x7bbf): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0x7c19): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0x9d45): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0x9d85): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xa26f): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xa2a3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xa5f5): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xa635): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xbef5): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xeabe): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xeb6a): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xec26): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simconvoi.o:simconvoi.cc:(.text+0xecf4): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xc6f0): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xc75f): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xc873): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xc880): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xcbc6): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xd620): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xd640): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simhalt.o:simhalt.cc:(.text+0xd829): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simtool.o:simtool.cc:(.text+0x8a99): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x3e): undefined reference to `_imp__sem_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x7f): undefined reference to `_imp__sem_post'
build/mingw/simworld.o:simworld.cc:(.text+0xac): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0xc3): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x31d): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0x332): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x36d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x397): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x3a3): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x3a9): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x437): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x454): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x534): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0xbb3): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0xbbc): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0xbc2): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0xbc8): undefined reference to `_imp__pthread_cond_signal'
build/mingw/simworld.o:simworld.cc:(.text+0xc58): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0xbc8): undefined reference to `_imp__pthread_cond_signal'
build/mingw/simworld.o:simworld.cc:(.text+0xc58): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0x1513): undefined reference to `_imp__pthread_attr_init'
build/mingw/simworld.o:simworld.cc:(.text+0x1524): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/simworld.o:simworld.cc:(.text+0x1531): undefined reference to `_imp__pthread_barrier_init'
build/mingw/simworld.o:simworld.cc:(.text+0x158c): undefined reference to `_imp__pthread_create'
build/mingw/simworld.o:simworld.cc:(.text+0x15b4): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x15ba): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x1743): undefined reference to `_imp__sem_init'
build/mingw/simworld.o:simworld.cc:(.text+0x1772): undefined reference to `_imp__pthread_attr_init'
build/mingw/simworld.o:simworld.cc:(.text+0x1783): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/simworld.o:simworld.cc:(.text+0x1790): undefined reference to `_imp__pthread_barrier_init'
build/mingw/simworld.o:simworld.cc:(.text+0x17eb): undefined reference to `_imp__pthread_create'
build/mingw/simworld.o:simworld.cc:(.text+0x1817): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x181d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x185c): undefined reference to `_imp__sem_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x1914): undefined reference to `_imp__ptw32_push_cleanup'
build/mingw/simworld.o:simworld.cc:(.text+0x1925): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x198b): undefined reference to `_imp__ptw32_pop_cleanup'
build/mingw/simworld.o:simworld.cc:(.text+0x1998): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0x19ec): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x1ab9): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x1ac6): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x1ae6): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x1b00): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0x31bf): undefined reference to `_imp__sem_init'
build/mingw/simworld.o:simworld.cc:(.text+0x3274): undefined reference to `_imp__pthread_attr_init'
build/mingw/simworld.o:simworld.cc:(.text+0x3285): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/simworld.o:simworld.cc:(.text+0x3292): undefined reference to `_imp__pthread_barrier_init'
build/mingw/simworld.o:simworld.cc:(.text+0x32ed): undefined reference to `_imp__pthread_create'
build/mingw/simworld.o:simworld.cc:(.text+0x3319): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x331f): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x33a2): undefined reference to `_imp__sem_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x551c): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x5532): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x5551): undefined reference to `_imp__pthread_cond_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x555e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x557d): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x5583): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x55a2): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x5712): undefined reference to `_imp__pthread_attr_init'
build/mingw/simworld.o:simworld.cc:(.text+0x5727): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/simworld.o:simworld.cc:(.text+0x5731): undefined reference to `_imp__pthread_barrier_init'
build/mingw/simworld.o:simworld.cc:(.text+0x57ce): undefined reference to `_imp__pthread_create'
build/mingw/simworld.o:simworld.cc:(.text+0x5cf4): undefined reference to `_imp__pthread_create'
build/mingw/simworld.o:simworld.cc:(.text+0x5f67): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x5f6d): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x5fa7): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x5fc6): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x5fd7): undefined reference to `_imp__pthread_join'
build/mingw/simworld.o:simworld.cc:(.text+0x6100): undefined reference to `_imp__pthread_barrier_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x6158): undefined reference to `_imp__pthread_join'
build/mingw/simworld.o:simworld.cc:(.text+0x1184a): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x11880): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x1260b): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x127a5): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x127cf): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x12d42): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x13962): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x13ad1): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x13b8e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x13dfc): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x13e32): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x14280): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x1429e): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x142b0): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x142ce): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x14629): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x14762): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x1476f): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x1479b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x147a8): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x147c7): undefined reference to `_imp__pthread_exit'
build/mingw/simworld.o:simworld.cc:(.text+0x2bc28): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x2bc4d): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x2cb39): undefined reference to `_imp__pthread_attr_init'
build/mingw/simworld.o:simworld.cc:(.text+0x2cb50): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/simworld.o:simworld.cc:(.text+0x2cb6f): undefined reference to `_imp__pthread_barrier_init'
build/mingw/simworld.o:simworld.cc:(.text+0x2cbfb): undefined reference to `_imp__pthread_create'
build/mingw/simworld.o:simworld.cc:(.text+0x2cc4c): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/simworld.o:simworld.cc:(.text+0x2cc51): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x2d12e): undefined reference to `_imp__pthread_cond_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x2d13b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x307d4): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x307f8): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x3177a): undefined reference to `_imp__pthread_cond_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x31787): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x32e20): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x32e3b): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x33023): undefined reference to `_imp__pthread_cond_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x33030): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x33242): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x332da): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simworld.o:simworld.cc:(.text+0x332fc): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x3413c): undefined reference to `_imp__pthread_cond_wait'
build/mingw/simworld.o:simworld.cc:(.text+0x34141): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simworld.o:simworld.cc:(.text+0x34255): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x8): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xe): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x14): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x52): undefined reference to `SDL_UnlockSurface'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x5f): undefined reference to `SDL_Flip'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x6c): undefined reference to `SDL_LockSurface'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x9c): undefined reference to `SDL_PollEvent'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xbc): undefined reference to `SDL_WaitEvent'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xc8): undefined reference to `SDL_PollEvent'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x217): undefined reference to `SDL_GetModState'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x24b): undefined reference to `SDL_GetModState'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x28e): undefined reference to `SDL_GetMouseState'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x2cd): undefined reference to `SDL_GetModState'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x310): undefined reference to `SDL_GetMouseState'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x5d0): undefined reference to `SDL_Init'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x5ef): undefined reference to `SDL_Quit'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x612): undefined reference to `SDL_GetError'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x644): undefined reference to `SDL_GetVideoInfo'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x687): undefined reference to `_imp__pthread_barrier_init'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x690): undefined reference to `_imp__pthread_attr_init'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x6a1): undefined reference to `_imp__pthread_attr_setdetachstate'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x6c9): undefined reference to `_imp__pthread_create'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x6dc): undefined reference to `_imp__pthread_attr_destroy'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x73c): undefined reference to `SDL_putenv'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x75b): undefined reference to `SDL_SetVideoMode'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x76c): undefined reference to `SDL_putenv'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x783): undefined reference to `SDL_GetVideoInfo'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x795): undefined reference to `SDL_VideoDriverName'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x847): undefined reference to `SDL_EnableUNICODE'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x85b): undefined reference to `SDL_EnableKeyRepeat'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x847): undefined reference to `SDL_EnableUNICODE'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x85b): undefined reference to `SDL_EnableKeyRepeat'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x86f): undefined reference to `SDL_WM_SetCaption'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x87b): undefined reference to `SDL_ShowCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x880): undefined reference to `SDL_GetCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x8b9): undefined reference to `SDL_CreateCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x8f2): undefined reference to `SDL_CreateCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x903): undefined reference to `SDL_ShowCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x951): undefined reference to `SDL_GetError'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x98c): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x999): undefined reference to `SDL_FreeCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x9a6): undefined reference to `SDL_FreeCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0x9c7): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xa20): undefined reference to `SDL_SetVideoMode'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xa65): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xa89): undefined reference to `SDL_UnlockSurface'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xade): undefined reference to `SDL_LockSurface'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xb1a): undefined reference to `SDL_MapRGB'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xb3c): undefined reference to `_imp__pthread_mutex_lock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xb5c): undefined reference to `_imp__pthread_mutex_unlock'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xb69): undefined reference to `_imp__pthread_barrier_wait'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xbd7): undefined reference to `SDL_UpdateRect'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xc9c): undefined reference to `SDL_RWFromFile'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xca3): undefined reference to `SDL_GetVideoSurface'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xcb7): undefined reference to `SDL_SaveBMP_RW'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xc03): undefined reference to `SDL_WarpMouse'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xc27): undefined reference to `SDL_SetCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xd17): undefined reference to `SDL_SetCursor'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xd21): undefined reference to `SDL_PumpEvents'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xd31): undefined reference to `SDL_GetTicks'
build/mingw/simsys_s.o:simsys_s.cc:(.text+0xd41): undefined reference to `SDL_Delay'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0xe1): undefined reference to `SDL_MixAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x10e): undefined reference to `SDL_MixAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x13e): undefined reference to `SDL_MixAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x16e): undefined reference to `SDL_MixAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x1b2): undefined reference to `SDL_InitSubSystem'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x202): undefined reference to `SDL_OpenAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x227): undefined reference to `SDL_CloseAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x233): undefined reference to `SDL_QuitSubSystem'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x279): undefined reference to `SDL_PauseAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x2a4): undefined reference to `SDL_QuitSubSystem'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x2e5): undefined reference to `SDL_RWFromFile'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x30d): undefined reference to `SDL_LoadWAV_RW'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x35a): undefined reference to `SDL_BuildAudioCVT'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x39f): undefined reference to `SDL_FreeWAV'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x3a7): undefined reference to `SDL_ConvertAudio'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x409): undefined reference to `SDL_FreeWAV'
build/mingw/sound/sdl_sound.o:sdl_sound.cc:(.text+0x441): undefined reference to `SDL_GetError'
collect2: error: ld returned 1 exit status
common.mk:21: recipe for target 'build/mingw/simutrans-experimental' failed
make: *** [build/mingw/simutrans-experimental] Error 1
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline TurfIt

Re: Cross-compiling: Linux to Windows
« Reply #36 on: December 18, 2016, 07:39:13 PM »
If your cross is setup the same as the MSYS2 version on Windows, -lpthreadGC2 can simply be removed, now builtin.
For the rest, you didn't install the dependent libraries - bzip2, zlib, SDL... One wonders how it even compiled without the headers even...

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #37 on: December 18, 2016, 08:34:22 PM »
The headers are definitely there and the libraries are installed - but I suspect that they are not cross-compile specific libraries, which might be the issue. The trouble is that I am not sure how to build a cross-compile specific version of pthreads, bzlib, zlib, libpng, etc.; Simutrans already has a mingw setup and a specific setting in the config.template so that I can make a config.mingw quite easily, but I do not know how this might be accomplished with these libraries (and the libraries on which, in turn, those libraries depend, potentially ad infinitum thereafter).
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #38 on: December 18, 2016, 09:29:25 PM »
If you just dump files found at random, you are playing roulette.

bzip and zlib are fundamental libraries and don't depend on anything but the C runtime. libpng might depend on zlib, I don't remember, and possibly only needed for makeobj. I would advise building with the GDI backend, so that you don't need SDL, at least for a first try.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #39 on: December 18, 2016, 11:39:52 PM »
Thank you for the suggestion of switching to a GDI build. I have done that. Instead of the very lengthy output that I get above, I only get these linker errors when I try to compile it:

Code: [Select]
===> RES simres.rc
===> LD  build/mingw/simutrans-experimental
/usr/bin/i686-w64-mingw32-ld: cannot find -lbz2
/usr/bin/i686-w64-mingw32-ld: cannot find -lz
collect2: error: ld returned 1 exit status
common.mk:21: recipe for target 'build/mingw/simutrans-experimental' failed
make: *** [build/mingw/simutrans-experimental] Error 1

This looks like a problem with the libz and bzlib libraries. Has anyone any idea how to cross-compile those or find cross-compile compatible binary versions of them?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #40 on: January 14, 2017, 03:19:49 PM »
I have now managed to compile cross-compiled versions of bzlib and zlib and these now appear to link correctly. However, I am now getting linker errors relating to pthreads - not the sort of linker error that I should expect if a cross-compile version of pthreads was missing entirely, but this error:

Code: [Select]

root@438242:/usr/share/games/nightly/simutrans-experimental# env CFG=mingw make -j5
===> LD  build/mingw/simutrans-experimental
build/mingw/simworld.o:simworld.cc:(.text+0x1914): undefined reference to `_imp__ptw32_push_cleanup'
build/mingw/simworld.o:simworld.cc:(.text+0x198b): undefined reference to `_imp__ptw32_pop_cleanup'
collect2: error: ld returned 1 exit status
common.mk:21: recipe for target 'build/mingw/simutrans-experimental' failed
make: *** [build/mingw/simutrans-experimental] Error 1

This seems to be a problem relating to the old cleanup push/pop functions that gave compile errors some time ago. I wonder whether the pthreads library is out of date?

Edit: I have attempted, but failed, to compile pthreads using mingw: the step of applying the patch documented here fails with error messages that give no information whatsoever as to the nature of the problem. Obtaining an alternative binary for mingw and putting that in the relevant library directory makes no difference to the original failure. I really do not know how to make any progress from here - the nature of the problem is totally obscure. Any help would be very much appreciated indeed.
« Last Edit: January 14, 2017, 04:22:57 PM by jamespetts »
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #41 on: January 14, 2017, 09:23:14 PM »
Some builds of mingw64 come with pthreads included, to make std::thread work. For some reason, my Windows install of mingw64 (from MSYS2) is a pthread build, while my Linux install (from the distro repo) is a w32thread build (it does have three pthread headers, though, but no lib).

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #42 on: January 14, 2017, 09:24:50 PM »
Yes, indeed, it does have pthreads included - but it does not work as it seems to be different from the standard version in weird ways.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Dwachs

  • DevTeam, Coder/patcher
  • Administrator
  • *
  • Posts: 4163
  • Total likes: 146
  • Helpful: 147
  • Languages: EN, DE, AT
Re: Cross-compiling: Linux to Windows
« Reply #43 on: January 15, 2017, 10:23:22 AM »
I use this http://mxe.cc/ for cross-compiling. It is very easy to install and configure.

Let me advocate again this cross-compiling tool based on mingw. It handles all the libraries for you. After installing, all I had to do was to call
Code: [Select]
make gcc bzip2 zlib pthreads
in mxe directory to install required libraries. Then create a symlink from libpthread.a to libpthreadGC2.a, create a new config.* for simutrans compiling. Then fire up make to compile simutrans. It cannot be easier than this.
Parsley, sage, rosemary, and maggikraut.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #44 on: January 16, 2017, 12:14:22 AM »
Thank you for that suggestion. I have just tried installing/building MXE, but unfortunately, the process fails with the following errors:

Code: [Select]
Failed to build package hyperscan for target i686-w64-mingw32.static!
------------------------------------------------------------
-- Configuring incomplete, errors occurred!
See also "/usr/share/mxe/mxe/tmp-hyperscan-i686-w64-mingw32.static/hyperscan-4.3.2.build/CMakeFiles/CMakeOutput.log".
See also "/usr/share/mxe/mxe/tmp-hyperscan-i686-w64-mingw32.static/hyperscan-4.3.2.build/CMakeFiles/CMakeError.log".
Makefile:598: recipe for target 'build-only-hyperscan_i686-w64-mingw32.static' failed
make[1]: *** [build-only-hyperscan_i686-w64-mingw32.static] Error 1
make[1]: Leaving directory '/usr/share/mxe/mxe'
real    0m18.328s
user    0m10.812s
sys     0m1.136s
------------------------------------------------------------
[log]      /usr/share/mxe/mxe/log/hyperscan_i686-w64-mingw32.static

Makefile:598: recipe for target '/usr/share/mxe/mxe/usr/i686-w64-mingw32.static/installed/hyperscan' failed
make: *** [/usr/share/mxe/mxe/usr/i686-w64-mingw32.static/installed/hyperscan] Error 1
make: *** Waiting for unfinished jobs....
[done]      jansson                  i686-w64-mingw32.static                               4496 KiB       0m25.129s
[done]      hdf-eos5                 i686-w64-mingw32.static                               34212 KiB      0m49.089s
[done]      id3lib                   i686-w64-mingw32.static                               12856 KiB      0m41.650s
[done]      json_spirit              i686-w64-mingw32.static                               38356 KiB      1m40.389s
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #45 on: February 01, 2017, 12:35:21 AM »
I have had another go at making this work by modifying the code so as no longer to use pthread_cleanup_push and pthread_cleanup_pop. I am now able to get it to compile and link.

However, the resulting executable (here) fails to run with the error:

Code: [Select]
The application was unable to start correctly (0xc000007b). Click OK to close the application.

The size of the executable is 7,708kb, suggesting that the problem is that, despite the linker command having succeeded, it has not linked all of its libraries. My config.mingw file is as follows:

Code: [Select]
#
# to compile:
# copy this file to config.default and adjust the settings
#

#BACKEND = allegro
BACKEND = gdi
#BACKEND = opengl
#BACKEND = sdl
#BACKEND = sdl2
#BACKEND = mixer_sdl
#BACKEND = posix

#COLOUR_DEPTH = 0
COLOUR_DEPTH = 16

#OSTYPE = amiga
#OSTYPE = beos
#OSTYPE = cygwin
#OSTYPE = freebsd
#OSTYPE = haiku
#OSTYPE = linux
OSTYPE = mingw
#OSTYPE = mac

#DEBUG = 3    # Level 1-3, higher number means more debug-friendly, see Makefile
OPTIMISE = 3  # Add umpteen optimisation flags
#PROFILE = 1  # Enable profiling
#PROFILE = 2  # Enable profiling with optimisation flags, can be used with `OPTIMISE = 1'

WITH_REVISION = 1 # adds the revision from svn; required for networkgames
# if you do not use SVN, add -DREVISION="1234" to the FLAGS below

#WIN32_CONSOLE = 1 # adds a console for windows debugging

MULTI_THREAD = 1 # Enable multithreading

# Define these as empty strings, if you don't have the respective config program
#ALLEGRO_CONFIG = allegro-config
#PNG_CONFIG     = pkg-config libpng
SDL_CONFIG     = sdl-config
#SDL2_CONFIG    = sdl2-config

#VERBOSE = 1

# The following useful conditional compilation flags exist
#
# Needed to compile:
# USE_C: no assembler for copying (required for not using GCC on x86)
# SIM_BIG_ENDIAN: MUST be set for PPC/Motorola byte order! (old mac, amiga)
# NO_INTPTR_T: must be set if intptr_t is not available
#
# Changing appearance:
# USE_SOFTPOINTER: emulate mouse pointer (set automatically in Makefile)
#
# Useful for debugging:
# DEBUG_ROUTES: show routing calculation information in minimap
# SHOW_FORE_GRUND: show which objects are drawn as foreground
# DEBUG_FLUSH_BUFFER: show the dirty areas on the screen
# USE_VALGRIND_MEMCHECK: make valgrind-memcheck aware of the memory allocation stuff in dataobj/freelist
# SYSLOG: send debug output to syslog
#
# Following flags alter game engine (and are off for standard builds)
# OTTD_LIKE: Enables half height tiles and crossconnects all industries
# AUTOMATIC_BRIDGES and AUTOMATIC_TUNNELS: will be built also for player
# AUTOJOIN_PUBLIC: stations next to a public stop will be joined to it
# USE_DIFFERENT_WIND: different airplane approach directions over the map
# DESTINATION_CITYCARS: Citycars can have a destination (enabled automatically - cannot be disabled)
#
# In order to use the flags, add a line like this: (-Dxxx)
# FLAGS = -DUSE_C

# Output directories:
#
# use this put objects file in same directory, where the sources are (not recommended):
# ... otherwise defaults to 'build/default')
#
# BUILDDIR = $(shell pwd)
#
# use this to specifiy the target directory for the executable:
# .. otherwise defaults to BUILDDIR
#
# MAKEOBJ_PROGDIR = $(shell pwd)
# NETTOOL_PROGDIR = $(shell pwd)
# PROGDIR  = $(shell pwd)

FLAGS = -fno-delete-null-pointer-checks -fno-strict-aliasing -std=c++11 -L/usr/share/games/nightly/simutrans-experimental/utils/openttd/lib -I/usr/share/games/nightly/simutrans-experimental/utils/openttd/ -L/root/zlib-source/zlib-1.2.10/zlib-1.2.10 -L/root/bzip2-1.0.6

LDFLAGS = -L/usr/share/games/nightly/simutrans-experimental/utils/openttd/lib -L/root/bzip2-1.0.6

# -I/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/parallel/

# -I/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/parallel/

# -I/usr/share/games/nightly/simutrans-experimental/utils/openttd/

CC=i686-w64-mingw32-gcc
CXX=i686-w64-mingw32-g++

Am I missing something - do I need to be even more explicit somewhere/somehow about what libraries to link than I already have been? Any assistance would be much appreciated.

Edit: The same occurs when specifying SDL2 in the config.mingw option. Do I need to specify the SDL libraries manually...?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline HaydenRead

Re: Cross-compiling: Linux to Windows
« Reply #46 on: February 01, 2017, 03:21:47 AM »
First thing I notice is you have
BACKEND = gdi

And

SDL_CONFIG = sdl_config

Not sure if this would create a problem, but surely SDL_CONFIG line should be commented out if using gdi

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #47 on: February 01, 2017, 06:34:33 AM »
First thing I notice is you have
BACKEND = gdi

And

SDL_CONFIG = sdl_config

Not sure if this would create a problem, but surely SDL_CONFIG line should be commented out if using gdi

No, that's not needed. In fact, they are there to override the defaults, but in this case, they are just overridden to the same value. And if anything, it would have cause more libraries to be linked, not less.

Edit: The same occurs when specifying SDL2 in the config.mingw option. Do I need to specify the SDL libraries manually...?

If sdl-config is not working, then you have to do that. Or rather, the makefile does have defaults that worked for me, but on the condition that SDL_CONFIG is set to empty (which is different from not set at all).

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #48 on: February 01, 2017, 08:14:39 AM »
Empty as in SDL_CONFIG     =

....?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline An_dz

  • Web Admin
  • Administrator
  • *
  • Posts: 2548
  • Total likes: 279
  • Helpful: 89
  • D'oh
    • by An_dz
  • Languages: PT, EN, (it, de)
Re: Cross-compiling: Linux to Windows
« Reply #49 on: February 01, 2017, 02:46:46 PM »
Or commented with #

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #50 on: February 01, 2017, 02:56:46 PM »
Should the #be before or after the SDL_CONFIG?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #51 on: February 01, 2017, 09:18:01 PM »
Or commented with #

No, that would trigger the default value, which is not nothing.

Offline Vladki

Re: Cross-compiling: Linux to Windows
« Reply #52 on: February 01, 2017, 10:03:48 PM »
Should the #be before or after the SDL_CONFIG?
Before.




Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #53 on: February 02, 2017, 12:20:22 AM »
Thank you for that: I am afraid that setting SDL_CONFIG = [blank] and SDL2_CONFIG = [blank] does not help: even after make clean, the executable still fails to run with the same error.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline fam621

Re: Cross-compiling: Linux to Windows
« Reply #54 on: February 03, 2017, 10:11:59 PM »
It keeps crashing James.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #55 on: February 04, 2017, 12:37:10 AM »
Do you mean the cross-compiled build on the Bridgewater-Brunel server? If so, I am aware of the fact that it does not work at all: as you will see from the posts above, I have not been able to make cross-compiling work yet.

You will need to use the builds provided by Ves for the time being.
« Last Edit: February 04, 2017, 12:56:09 AM by jamespetts »
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline prissi

  • Developer
  • Administrator
  • *
  • Posts: 8698
  • Total likes: 300
  • Helpful: 228
  • Languages: De,EN,JP
Re: Cross-compiling: Linux to Windows
« Reply #56 on: February 04, 2017, 09:19:43 AM »
Do you have 32 bit GDI cross compiling libraries by chance but linking with 64 bit def?

Also 16 bit video modes are no longer officially supported on window 10 for fullscreen, so fullscreen may crash there (although it asks whether changing resolution succeeded or failed).

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #57 on: February 04, 2017, 09:31:39 AM »
Also 16 bit video modes are no longer officially supported on window 10 for fullscreen, so fullscreen may crash there (although it asks whether changing resolution succeeded or failed).

Windows 10 appears to fake it somehow. When I press Alt+Tab while playing older games on Windows 10, the rest of the system is still running in full color. On Windows 7 and earlier, everything else was also running in the same color depth as the game, causing things to look very ugly if the game used 8-bit graphics. Screen resolution is however changed for real.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #58 on: February 04, 2017, 12:52:16 PM »
I do not think that I have set up any cross-compile GDI libraries (but I am producing a 32-bit executable, not a 64-bit executable, so it would need to be a 32-bit set of libraries). Do I need to set up these libraries manually (i.e., do they not come with MinGW)?

As to Windows 10, I am using Windows 7, so Windows 10 compatibility cannot be the issue. Further, I always run Simutrans in windowed mode not full-screen, so this cannot be the issue either.

Thank you both for your replies, however: this is most helpful. It would be extremely useful to get cross-compiling set up.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline prissi

  • Developer
  • Administrator
  • *
  • Posts: 8698
  • Total likes: 300
  • Helpful: 228
  • Languages: De,EN,JP
Re: Cross-compiling: Linux to Windows
« Reply #59 on: February 04, 2017, 01:20:46 PM »
I think you produce 64 bit binaries with your compiler, at least that is my interpretation of -w64- in your compiler CC names. That will obviously crash on a 32 bit system.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #60 on: February 04, 2017, 01:37:04 PM »
I think you produce 64 bit binaries with your compiler, at least that is my interpretation of -w64- in your compiler CC names. That will obviously crash on a 32 bit system.

My system is not a 64-bit system but a 32-bit system, but 64-bit Windows 7 can of course run 32-bit binaries.  From what I understand, the i686 indicates a 32-bit build whereas replacing that with x86_64 would produce a 64-bit binary. Those are the commands that I have been advised to use in any event.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #61 on: February 04, 2017, 01:49:52 PM »
I think you produce 64 bit binaries with your compiler, at least that is my interpretation of -w64- in your compiler CC names. That will obviously crash on a 32 bit system.

i686-w64-mingw32 is for 32-bit and x86_64-w64-mingw32 is for 64-bit. Both are from the mingw-w64 project. The original mingw32-project just calls the target mingw32, and only does 32-bit.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #62 on: February 04, 2017, 08:56:59 PM »
Further experimentation has shown that the problem was that it was somehow referring to the wrong .dll files. Putting some specific .dll files in my simutrans directory allows it to run. I worked this out after installing msys2 on Windows and trying to build it in that way, getting the same error message: a search for that error message with "msys2" gave me an explanation of what caues it, which allowed me to fix it.

However, the cross-compiled executable is still faulty. Although it will now start, attempting to load a saved game will crash it. Since this is a crash exclusive to the cross-compiled version, I cannot readily run it in a debugger to see where the problem occurs, so it is difficult to track this down.

I wonder whether the problem might be that some of the .dlls (which I took from the msys2 installation) might somehow be incompatible with the cross-compile build?

In any event, I have uploaded the .dlls in a .zip file to my server (I think that they are all open source) so that anyone downloading the cross-compile build (here) can at least try it.

Edit: The crash problem occurs when loading a network game, suggesting that the problem is not with bzlib.
« Last Edit: February 04, 2017, 09:18:28 PM by jamespetts »
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline TurfIt

Re: Cross-compiling: Linux to Windows
« Reply #63 on: February 04, 2017, 09:08:49 PM »
Try a fully static build? Attached is my makefile changes for Standard to build it static.

As long as it's built with debugging symbols, where you've built it shouldn't affect the ability to run it in the debugger.
I really don't know how you expect things to work when you grab a library from here, a header from over there, ohh here's a dll, let's use this.... At least grab the dlls from the cross.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #64 on: February 04, 2017, 09:45:29 PM »
Thank you for that. I have attempted that (I had to add conditional statements to the makefile so that the fully static build only applied to a MinGW build). This appears to improve things for MinGW on Windows: the file size is only a little larger (8,828kB) and yet it now runs without any of the extra .dlls in the directory.

The cross-compiled version does not work so well: it gives an error message complaining about a missing pthreadGC2-w32.dll when trying to start it. I already have a pthreadGC2.dll file in the same directory (and renaming it to pthreadGC2-w32.dll makes no difference to the error message, so it is obviously actually a different file in substance). This appears to suggest that the cross-compiler is working with a different pthread implementation, and that it is not statically linking pthread.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #65 on: February 04, 2017, 11:32:52 PM »
I remember struggling with a pthread dll dependency once, even though I wasn't using threads at all. Unfortunately, I don't remember what the situation was. Since DLL get messages about threads starting and stopping, maybe a DLL is required for some functionality.

My mingw64 built Simutrans doesn't require any non-Windows DLLs, despite me having done almost he opposite of TurfIt when it comes to LDFLAGS. Which is a bit odd, because I've usually been unable to force static linking of everything that isn't Windows.

I really don't know how you expect things to work when you grab a library from here, a header from over there, ohh here's a dll, let's use this.... At least grab the dlls from the cross.
I already have a pthreadGC2.dll file in the same directory (and renaming it to pthreadGC2-w32.dll makes no difference to the error message, so it is obviously actually a different file in substance).

Please pay attention to what we're telling you when you ask for help.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #66 on: February 04, 2017, 11:36:07 PM »
I did read what was written; but the intention of that experiment was to test to see whether the issue really was just a file naming clash or whether it was more substantive.

Is there a way of getting the right version of the relevant .dll, does anyone know?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline prissi

  • Developer
  • Administrator
  • *
  • Posts: 8698
  • Total likes: 300
  • Helpful: 228
  • Languages: De,EN,JP
Re: Cross-compiling: Linux to Windows
« Reply #67 on: February 05, 2017, 02:20:22 AM »
You need exactly the same pthread DLL which you program was built for. These DLL are not compatible between different versions. However, in principle one might now do with the native pthread for mingw. Not tested though.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Devotee
  • *
  • Posts: 15253
  • Total likes: 361
  • Helpful: 159
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Cross-compiling: Linux to Windows
« Reply #68 on: February 05, 2017, 01:29:52 PM »
Thank you for that. I have tried without success to make pthread link statically (re-compiling, it produces a file of identical size which produces the identical error). To do this, I followed the advice here of changing -lpthread to -static -lpthread in the makefile. Can anyone assist with how to link pthread statically to circumvent this problem?

I do not know how to identify the correct .dll for the cross-compile version of MinGW - the version with msys2 is clearly not correct, and there does not appear to be a specific cross-compile version. Do I need to build the .dll from sources using the cross-compile toolchain? Surely a pre-compiled version must exist somewhere?
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Offline Ters

  • Coder/patcher
  • Devotee
  • *
  • Posts: 4577
  • Total likes: 166
  • Helpful: 106
  • Languages: EN, NO
Re: Cross-compiling: Linux to Windows
« Reply #69 on: February 05, 2017, 01:49:08 PM »
I do not know how to identify the correct .dll for the cross-compile version of MinGW - the version with msys2 is clearly not correct, and there does not appear to be a specific cross-compile version. Do I need to build the .dll from sources using the cross-compile toolchain? Surely a pre-compiled version must exist somewhere?

As TurfIt tried to tell you, it is included with the cross compiler. There seems to be some difference between my MSYS2 mingw64 and my mingw64 cross-compiler as to where it puts its DLLs. The former puts them in bin, the other programs in there does after all require them, while the latter puts them in a deeply nested subdirectory of lib (/usr/lib/gcc/i686-w64-mingw32/4.9.4). My cross-compiler does not have pthread-support, however. If you have installed pthread separately, the DLL is also provided by that installation. In that case, it may be that it does not support static linking.