New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
configure: error: compiler cannot create executables #3174
Comments
It does seem like a good solution here is to modify the build system to not invoke configure "automatically" and unexpectedly. |
Why would this behaviour be unexpected? I find it quite practical that the configure script is automatically regenerated and re-ran when configure.ac changed like the object files and executables / libraries are recompiled (only) when the source files changed. |
Well, I guess if you run configure through emconfigure in that case as well, it should all be fine. |
It would be. But config.status is a script automatically generated by configure (see Wikipedia). That's why I suggested just fixing it with sed in emconfigure, but I could imagine there is a better way of solving this. |
Today I stumbled upon the "compiler cannot create executables" error again. Only this time it was while using emconfigure (which means I can't build my emscripten project at all). Something seems to have seriously broken since somewhere between 1.34.6.75 and 1.34.6.123 (I'm sure it didn't work with the latter, and somewhat sure it did work with the former). I'm currently running 1.34.6.131 and experiencing this problem. |
Can you bisect to a commit, or at least a range? |
Right. I'll see what I can do. |
Hmm, this has to be a problem introduced by autoconf, I can't find any release with which it works. I have autoconf 2.69. EDIT: Its copyright says 2012. That can't be the problem... |
Okay, so I searched around a bit and found that emconfigure was supposed to set a different compiler (clang) during the configure stage and then go on with CC / CXX set to emcc / em++. I added
I really have no idea what's wrong, the only thing useful in there seems to be the last line that states that some file is missing... EDIT: Hmmm, maybe I should have run |
Well, in hindsight I should probably have created a new issue, but it doesn't seem like the original one will ever be fixed anyway... So, emconfigure does work when emscripten-fastcomp is available, although not the with the current version (or the current version just takes forever). I found 1.28.0 worked, so I'll see if I can find out the cause of this new behaviour where the check if the C++ compiler works doesn't fail, but takes very long, possibly not completing ever (I let it run for half a minute). |
So... The configure script fails when checking for the compiler version, as emcc --version runs the sanity checks and then returns non-0 when it finds a fastcomp version it doesn't expect. This makes bisecting pretty much impossible. I now managed to compile everything with my locally installed version of emscripten, 1.34.6. However, when creating the final .js file, I get a lot of EDIT: Found the problem, had multiple Makefiles and didn't replace |
It might be easier to bisect to revisions, which are tagged in the 3 repos (1.28.0, 1.28.1, etc.). Need to update all 3 repos together to each tag, and build fastcomp for each. If that still doesn't work, then if you can make as small a standalone testcase as possible i can try to bisect. |
This issue has been automatically marked as stale because there has been no activity in the past 2 years. It will be closed automatically if no further activity occurs in the next 7 days. Feel free to re-open at any time if this issue is still relevant. |
It's been years since I've last used emscripten, I don't know if this issue still exists and/or is relevant. |
I've had trouble with this for quite some time but didn't yet have a closer look at the problem. When I change the configure.ac in my project and run "emmake make" in my emscripten build directory afterwards, the configure script is automatically regenerated and re-ran. For the re-running part, the flags passed on the last invocation are used again.
When searching for the root of this problem, I found the invocation of configure is inside the config.status script in the build directory. It can be manually triggered by calling the script with the --recheck option:
Then the configure script is executed:
which fails because
Of course this doesn't happen when calling configure through emconfigure with the same arguments. Also, all of the command line arguments and environment variables are automatically set by emconfigure, they were not part of my emconfigure invocation.
The simplest solution I can think of is to use sed to manually change the functionality that invokes configure in config.status. It looks like this in my config.status file:
The text was updated successfully, but these errors were encountered: