binutils's ld and gcc's ld collsion
Background: I want to install gcc and objdump, where objdump is contained in binutils.
Home-manager tolds me gcc's ld collides with binutils's ld.
As I explore into gcc and binutils, weird thing comes.
Packages binutils and gcc both contain ld executable.
binutils and gcc has the same priority 10.
The WEIRD thing is,
binutilswants to have a lower priority than gcc-wrapper, so sets its priority to 10, see nixpkgs:pkgs/development/tools/misc/binutils/default.nixGive binutils a lower priority than gcc-wrapper to prevent a collision due to the ld/as wrappers/symlinks in the latter.
- Both
gccwrapper and all-packages set gcc priority to 10, see nixpkgs:pkgs/top-level/all-packages.nixandpkgs/build-support/cc-wrapper/default.nixAll-packages set priority by lowPrio function, which will set priority to 10. Cc-wrapper directly set priority to 10.
As a result, binutils will definitely collide with gcc!
My solution: assign binutils a lower priority, like this
home.packages = with pkgs; [
(lib.setPrio # higher value, less prior
(bintools-unwrapped.meta.priority + 1)
bintools-unwrapped
)
gdb
]