Перейти к содержанию
    

Несколько вопросов по GNU toolchains

Хочу для себя прояснить некоторые моменты:

 

- непонятно для чего имеется две копии бинарников с разными названиями (например mipsel-linux-gcc и просто gcc) и заголовочных файлов в разных дирректориях

 

- откуда gcc "знает" путь к стандартным заголовочным файлам?

 

- откуда ld "знает" путь к стандартной библиотеке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это два разных gcc один собран для таргета совместимого с x86 (ну или выше)

второй для arm

(а может и тупо симлинк , в некоторых тулчайнах и такое можно увидеть )

 

предполагаю что со времени своей компиляции

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- откуда gcc "знает" путь к стандартным заголовочным файлам?

- откуда ld "знает" путь к стандартной библиотеке?

из опций командной строки или makefile

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- откуда gcc "знает" путь к стандартным заголовочным файлам?

- откуда ld "знает" путь к стандартной библиотеке?

думаю что эти пути прописаны в бинарниках относительно папки бинарников

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это два разных gcc один собран для таргета совместимого с x86 (ну или выше)

второй для arm

Это именно бинарники для таргета (не линки). Они имеют один размер но разные названия.

 

 

из опций командной строки или makefile

Файл можно скомпилировать и с линковать и без makefile или указания путей в коммандной строке.

И все будет в порядке. Я проверял.

 

 

думаю что эти пути прописаны в бинарниках относительно папки бинарников

Вот я тоже к этому склюняюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

gcc это frontend, по умолчанию он вызывает компилятор для того target, что был собран, по желанию все это задается опциями "-V version -b machine". пути к стандартным либам/includes задаются на этапе сборки gcc и потом могут отдельно конфигурится при вызове. ld ничего не знает - его или вызывает сам gcc с необходимыми опциями или его вызваешь сам, задавая опции вручную.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если нужно точно знать что и откуда берёт gcc, или если надо заменить пути линкер и пр., можно воспользоваться нехитрой последовательностью действий

# Получаем
gcc -dumpspecs > ./specs
# Тут правим то что надо
vi ./specs
# Сохраняем
mv ./specs `dirname $(gcc -print-libgcc-file-name)`/specs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В вопросе что-откуда берется появилась некоторая ясность. Всем спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...