Сходство не определяется состоянием процессора и поэтому не может быть изменено сборкой (в одиночку). Вам необходимо участие ОС. И каждая ОС будет иметь определенный вызов для этого.
Что будет делать ОС: ОС будет иметь планировщик, который фактически является программой, которая определяет, какой процесс выполняется на каком процессоре. Установив привязку как пользователь, вы настраиваете этот планировщик.
И если у вас не будет ОС (что, как мне кажется, подразумевается под вопросом), то вы сами пишете планировщик, и у вас будет собственный контроль над конфигурацией, и вы, вероятно, начнете с глобальной очереди выполнения и для каждого процессора (ядра) следите за этой очередью выполнения и извлекайте из нее процессы для запуска.
Так как же тогда это работает? Во время загрузки работает только один процессор. Если вы, как ОС, готовы к этому, вы «загружаете» другие процессоры, которые начинают выполнять ваш код и, вероятно, будут запускать своего рода планировщик.
Пример реализации см. В Linux 2.6.29, функция arch / x86 / kernel / smpboot.c do_boot_cpu (), которая несколькими способами переводит ЦП в оперативный режим с использованием APIC.