#11246 closed Bugs (fixed)
boost.coroutine 1.58 fails to build for mingw because of undefined symbols
| Reported by: | anonymous | Owned by: | olli |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | context |
| Version: | Boost 1.58.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
Hello,
I'm trying to cross-compile boost 1.58 from linux for mingw from tarball for archlinux (aur.archlinux.org/packages/mingw-w64-boost/).
I'm stuck when linking boost.coroutine because I've got undefined references to symbols in boost.context (make_fcontext, jump_fcontext):
gcc.link.dll bin.v2/libs/coroutine/build/gcc-mingw-mingw64/release/binary-format-pe/target-os-windows/threadapi-win32/threading-multi/libboost_coroutine-mt.dll.a bin.v2/libs/coroutine/build/gcc-mingw-mingw64/release/binary-format-pe/target-os-windows/threadapi-win32/threading-multi/detail/coroutine_context.o:coroutine_context.cpp:(.text+0x4a): undefined reference to `_imp__make_fcontext' bin.v2/libs/coroutine/build/gcc-mingw-mingw64/release/binary-format-pe/target-os-windows/threadapi-win32/threading-multi/detail/coroutine_context.o:coroutine_context.cpp:(.text+0xc7): undefined reference to `_imp__jump_fcontext'
It looks exactly like this issue github.com/boostorg/context/pull/12 that was fixed for AIX.
Prior to the build I applied the fedora patch used to successfully build previous versions of boost for mingw: pkgs.fedoraproject.org/cgit/mingw-boost.git/tree/boost-mingw.patch, but maybe it needs updating. Also I wonder why it wasn't submited or accepted upstream.
Regards, xan
Change History (5)
comment:1 by , 7 years ago
| Component: | context → Building Boost |
|---|---|
| Summary: | boost.coroutine 1.58 fails to build for mingw because of undefined symbols in boost.context → boost.coroutine 1.58 fails to build for mingw because of undefined symbols |
comment:2 by , 7 years ago
| Component: | Building Boost → coroutine |
|---|
comment:3 by , 7 years ago
comment:4 by , 7 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:5 by , 7 years ago
| Component: | coroutine → context |
|---|

I have the same here, Boost 1.58, using mingw32 4.9.1 on Windows x86 (toolchain provided by Qt 5.4 package)
gcc.link.dll bin.v2\libs\context\build\gcc-mingw-4.9.1\release\threading-multi\libboost_context-mgw49-mt-1_58.dll.a Warning: corrupt .drectve at end of def file Warning: corrupt .drectve at end of def file gcc.link.dll bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\libboost_coroutine-mgw49-1_58.dll.a bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o:coroutine_context.cpp:(.text+0x4a): undefined reference to `_imp__make_fcontext' bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o:coroutine_context.cpp:(.text+0xc7): undefined reference to `_imp__jump_fcontext' c:/qt5/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/bin/ld.exe: bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o: bad reloc address 0x20 in section `.eh_frame' collect2.exe: error: ld returned 1 exit status "g++" "-Wl,--out-implib,bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\libboost_coroutine-mgw49-1_58.dll.a" -o "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\libboost_coroutine-mgw49-1_58.dll" -shared -Wl,--start-group "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o" "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\exceptions.o" "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\windows\stack_traits.o" "bin.v2\libs\context\build\gcc-mingw-4.9.1\release\threading-multi\libboost_context-mgw49-mt-1_58.dll.a" "bin.v2\libs\thread\build\gcc-mingw-4.9.1\release\threading-multi\libboost_thread-mgw49-mt-1_58.dll.a" "bin.v2\libs\chrono\build\gcc-mingw-4.9.1\release\threading-multi\libboost_chrono-mgw49-mt-1_58.dll.a" "bin.v2\libs\system\build\gcc-mingw-4.9.1\release\threading-multi\libboost_system-mgw49-mt-1_58.dll.a" "bin.v2\libs\system\build\gcc-mingw-4.9.1\release\libboost_system-mgw49-1_58.dll.a" -Wl,-Bstatic -Wl,-Bdynamic -Wl,--end-group -march=i686 -m32 ...failedI haven't used any patches, just following the build instructions on the 'Getting Started' page.