Можно ли статически построить gcc с помощью buildroot?

#gcc #buildroot

#gcc #buildroot

Вопрос:

Я использую buildroot для создания нового кросс-компилятора gcc на выделенном компьютере.

Это сработало нормально, но теперь мне нужно запустить этот gcc с другого компьютера, на котором у меня другая версия libc:-(. Конечно, gcc затем разбился.

Можно ли статически построить gcc с помощью buildroot?

Ответ №1:

Вы могли бы попробовать передать -static компоновщику (через LDFLAGS), но имейте в виду, что полное статическое связывание больше не поддерживается glibc (соответственно. для этого нужна сборка glibc, которая поддерживает статическое связывание).

Это связано с тем, что библиотеки nss (переключатель сервера имен) будут загружаться динамически (если вы не скомпилируете свой собственный glibc — но это противоречит цели nss). Однако этого может быть достаточно, чтобы уменьшить зависимости от системных библиотек.

Но я мог бы предположить, что статически связанный gcc довольно огромен — это может привести к длительному времени запуска.

Ответ №2:

Если ваша цель состоит только в создании перемещаемой цепочки инструментов, статической связи с expat, gmp, mpfr и mpc должно быть достаточно. Вы можете просто применить https://patchwork.ozlabs.org/patch/359841 /