[MacPorts] #64525: many ports fail to build for ppc on 10.6.8 (Rosetta) due to collect2: ld terminated with signal 6 [Abort trap]
MacPorts
noreply at macports.org
Thu Jan 27 00:12:11 UTC 2022
#64525: many ports fail to build for ppc on 10.6.8 (Rosetta) due to collect2: ld
terminated with signal 6 [Abort trap]
-------------------------------+-------------------------------------------
Reporter: barracuda156 | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.7.1
Resolution: | Keywords: powerpc, snowleopard, rosetta
Port: shared-mime-info |
-------------------------------+-------------------------------------------
Comment (by kencu):
Replying to [comment:4 barracuda156]:
> Could you tell me, what options we basically have for linkers? Apple
`ld`, Xcode `ld64`, Macports `ld64-97`, Macports `ld64-127`? (I know there
were other versions, but it seems that mostly 97 and 127 are used with
ppc.)
You have, in MacPorts, the ld that comes with Xcode (which is usually also
the one installed in the system at /usr) although with 10.6.8 that can be
confused as there are several choices for Xcode.
You have ld64-97, and ld64-127.
After that, PowerPC support is not present in MacPorts linkers.
We used to think that ld64-97 was best for Tiger, and ld64-127 was best
for Leopard PPC, but explorations over the past month that we have done,
as you know, show that ld64-97 is probably today the most reliable general
linker for PowerPC code.
It is still not 100% clear if there are cases where certain things will
not build with ld64-97 but do build with ld64-127 that might mess that up,
for example rpath support, etc, etc, etc.
> And how can I switch between these? `--with-ld=` works sometimes, but
often is not recognized by compiler or build system (or maybe I use it in
a wrong way).
That is not always simple to say. Each compiler has a default linker that
it knows where to find. It can be hard to override that default linker by
using build or configure lines, so what MacPorts did instead is change
what that default linker points to by using the ld64 "shim" port that
installs symlinks to the desired linker.
But that is default linker for the whole system, and it's not simple to
change on a build-by-build basis.
If you want the compiler to use a linker other than a default linker, you
need to explore what environment variables and build arguments that
compiler is prepared to respond to. Some trial-and-error can be involved.
See <https://stackoverflow.com/questions/40470931/how-to-specify-
alternate-linker-command-when-linking-with-cc> for example, and
<https://gcc.gnu.org/onlinedocs/gccint/Driver.html#Driver> and probably
many other google hits that might well be better.
--
Ticket URL: <https://trac.macports.org/ticket/64525#comment:8>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list