Как и почему линкеры были впервые разработаны как инструменты, отделенные от компиляторов? - PullRequest
4 голосов
/ 28 июля 2010

В принципе, мне просто интересно узнать историю.

Когда был написан первый компоновщик? Каково было обоснование в то время? Например. было ли многоязычное развитие проблемой? На какую платформу он был нацелен? Какие языки и компиляторы были поддержаны? На каких интересных этапах они развивались?

Ответы [ 3 ]

3 голосов
/ 28 июля 2010

Согласно Линкерам и загрузчикам Джоном Левайном, концепция, по крайней мере, была разработана в 1947 году, когда к 1960-м годам была развита современная редактор связей. Они используются для повторного использования библиотек модулей, разработанных отдельно различными программами, которые в них нуждаются. Я предлагаю прочитать текст (ссылка выше из поиска книг Google) для получения дополнительной информации.

1 голос
/ 30 августа 2010

Причины, по которым компоновщики были отдельными программами, заключались в том, что в прошлом объем оперативной памяти был довольно низким, и требовалось разделять компилятор и компоновщик. Я видел очень старый компилятор на Фортране, который работал на 16 КБ ОЗУ, но должен был проходить десятки разных проходов. Связывание было только несколькими из них.

1 голос
/ 28 июля 2010

Несомненно, что здесь есть человек или два старше меня, но я знаю, что когда я впервые начал писать код в конце 70-х, у скомпилированных языков (особенно сборок) уже были отдельные линкеры на протяжении десятилетий. Вам нужно что-то вроде компоновщика, чтобы иметь дело с отдельно скомпилированными исходными файлами, даже в ассемблере.

Оглядываясь назад, вы начнете нуждаться в символическом компоновщике, когда в первый раз начнете использовать перемещаемые символические адреса для системных вызовов, а не просто переходите в какое-то известное место.

...