rust: rpath = false, la pareja obligatoria de poner lld como enlazador directo
El build con `ld.lld` en el spec murió compilando `std`:
ld.lld: error: unknown argument '-Wl,-z,origin'
ld.lld: error: unknown argument '-Wl,-rpath,$ORIGIN/../lib'
Con el enlazador invocado DIRECTO (sin driver de C), los `-Wl,…` que el bootstrap añade para el
rpath de sus propios binarios llegan tal cual a lld, que no los entiende — esa sintaxis existe para
que un `cc` los traduzca.
El rpath sobra igual: con `prefix = "/usr"` las librerías quedan en `/usr/lib`, que ya está en el
camino del cargador. Es lo que hacen las distros que empaquetan rust.
Costó 6 minutos de build descubrirlo, que es lo que vale tener la cadena en la granja: cada intento
falla temprano y con el mensaje exacto.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -117,6 +117,16 @@ channel = "stable"
|
||||
codegen-tests = false
|
||||
deny-warnings = false
|
||||
musl-root = "/usr"
|
||||
# ⚠ `rpath = false` es la pareja de haber puesto `ld.lld` como enlazador en el spec del triple.
|
||||
# Con el enlazador INVOCADO DIRECTO (sin driver de C), los `-Wl,…` que el bootstrap añade para el
|
||||
# rpath de sus propios binarios llegan tal cual a lld, que no los entiende:
|
||||
#
|
||||
# ld.lld: error: unknown argument '-Wl,-z,origin'
|
||||
# ld.lld: error: unknown argument '-Wl,-rpath,$ORIGIN/../lib'
|
||||
#
|
||||
# …y muere compilando `std`. El rpath sobra igual: con `prefix = "/usr"` las librerías quedan en
|
||||
# `/usr/lib`, que YA está en el camino del cargador. Es lo que hacen las distros que empaquetan rust.
|
||||
rpath = false
|
||||
|
||||
[install]
|
||||
# ⚠ SIN ESTO EL TOOLCHAIN QUEDA FUERA DEL PATH, y es la trampa de «existe ≠ se encuentra»: el
|
||||
|
||||
Reference in New Issue
Block a user