Fix gac to ensure that binaries it creates on Linux can load and run, even if a GAP package with a compiled kernel extension (such as IO) is present #4006
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reported by Bill Allombert: compiling a simple test program via, say,
gac catp.g -o catp
, and then running it results in an error like this:This was caused by the linker invocation in gac missing the
-export-dynamic
flag
This patch also fixes a second issue: While GAP deliberately links using the C
compiler, the linker command in gac used the C++ compiler for linking. Now
both use the C compiler, ensuring consistent behavior.
Note that we quite deliberately use the C compiler to link, despite GAP
containing C++ code: that code that is careful not to use the C++ standard
library and for which RTTI and exceptions are disabled