3 ms·
Good, this was always incredibly confusing, and a hassle because it even needs Linux-specific code in otherwise completely platform-agnostic (cmake) build syste
by flohofwoe 3y ago
Good, this was always incredibly confusing, and a hassle because it even needs Linux-specific code in otherwise completely platform-agnostic (cmake) build system files.
The other even more confusing thing is that -pthread/-lpthread may be needed even when your own code doesn't use pthreads at all (while at it, please also get rid of -pthread), but some dynamically linked dependency does (like linking with X11+GLX+GL) - which then doesn't just cause a linker error but a runtime crash with an entirely unrelated error message (but only on some Linux setups) - I hope the change will fix these problems too.
And hopefully the 'm' library is next (seems they intend to but it didn't make it into this release).
- CoastalCoder 3y agoCan you say more about that problem with transitive dependencies, e.g. x11? Does it only happen when your code links in the static version of a library that requires pthreads?
- flohofwoe 3y agoAll I can do is give you a couple of Github ticket links where users of my libraries stumbled over the issue (and with different symptoms): - https://github.com/floooh/sokol/issues/376 https://github.com/floooh/sokol/issues/376 - https://github.com/floooh/sokol/issues/404 https://github.com/floooh/sokol/issues/404 - https://github.com/floooh/cimgui-sokol-starterkit/issues/6 https://github.com/floooh/cimgui-sokol-starterkit/issues/6 We then added a dummy call to a no-op pthread function, so that users at least get a pthread-related linker error and can figure out that they need the -pthread/-lpthread options instead of running into random runtime problems: - https://github.com/floooh/sokol/pull/456 https://github.com/floooh/sokol/pull/456 Also, on my Ubuntu laptop this problem didn't happen, that's why I didn't catch it during development, it seems to be specific to some distros or personal config changes. The affected code bases don't use threading and didn't link pthread before (neither statically nor dynamically).
- aloisklink 3y agoBtw, CMake has the [FindThreads][1] module to automatically link with `-lpthread`/`-pthread` in a platform-agnostic way. Even after this change in glibc, you may still need to use FindThreads to handle [HP-UX][2] (some of which still run [Itanium][3]!!!). [1]: https://cmake.org/cmake/help/latest/module/FindThreads.html https://cmake.org/cmake/help/latest/module/FindThreads.html [2]: https://en.wikipedia.org/wiki/HP-UX https://en.wikipedia.org/wiki/HP-UX [3]: https://en.wikipedia.org/wiki/Itanium https://en.wikipedia.org/wiki/Itanium