О кросс-компиляции clang
2014-07-21 11:55 amКросс-компиляция в шланге — просто конфетка по сравнению с gcc.
Скачиваются последние бинарики под вашу платформу с llvm.org, с целевой машины тарятся папки /lib, /usr/lib, /usr/include, кросс-компилятору передаются все задающие целевую платформу опции (например для Raspberry Pi: -target armv6--freebsd10.0-gnueabi -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp), плюс пути к растаренным инклудам/либам — и вуаля, у нас уже есть набор объектных файлов.
Правда, чтобы скомпоновать их, всё равно нужен платформенно-зависимый компоновщик — GNU ld из binutils или Microsoft link.exe. Однако же собрать cross-binutils куда проще, чем весь cross-toolchain: одно стандартное заклинание ./configure ; make ; make install и всё.
GNU ld и GNU as тоже, конечно, могли бы принимать опцию -target и независимо от хост-платформы поддерживать любые целевые архитектуры. В идеальном мире. На практике, я думаю, мы скорее дождёмся alternative BSD-licensed binutils от проекта LLVM, чем упоротые Столлмэновские наркоманы доведут до ума свои поделки.
Скачиваются последние бинарики под вашу платформу с llvm.org, с целевой машины тарятся папки /lib, /usr/lib, /usr/include, кросс-компилятору передаются все задающие целевую платформу опции (например для Raspberry Pi: -target armv6--freebsd10.0-gnueabi -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp), плюс пути к растаренным инклудам/либам — и вуаля, у нас уже есть набор объектных файлов.
Правда, чтобы скомпоновать их, всё равно нужен платформенно-зависимый компоновщик — GNU ld из binutils или Microsoft link.exe. Однако же собрать cross-binutils куда проще, чем весь cross-toolchain: одно стандартное заклинание ./configure ; make ; make install и всё.
GNU ld и GNU as тоже, конечно, могли бы принимать опцию -target и независимо от хост-платформы поддерживать любые целевые архитектуры. В идеальном мире. На практике, я думаю, мы скорее дождёмся alternative BSD-licensed binutils от проекта LLVM, чем упоротые Столлмэновские наркоманы доведут до ума свои поделки.