Мой ответ, вероятно, неполный, но, пока не появится более полный ответ, мы можем начать со следующего:
1. Руководство GCC. К сожалению, Debian и Фонд свободного программного обеспечения имеют немного противоречивые представления о том, что такое свободное программное обеспечение.В данный момент руководство GCC может помочь вам, но оно было выделено по незначительным техническим юридическим причинам в несвободный архив Debian.
Это противоречит духу Debian - советовать кому-либоустановить из не бесплатно, не так ли?Скажу только, что я установил руководство GCC из non-free на свою собственную коробку Debian следующим образом.В / etc / apt / sources.list :
deb http://mirror.us.leaseweb.net/debian/ stretch main contrib non-free
deb-src http://mirror.us.leaseweb.net/debian/ stretch main contrib non-free
(Вы можете перечислить любое зеркало, которое вам нравится, но Leaseweb так же хорошо, как и любое.) Затем, apt-get update
и apt-get install gcc-doc
, затем info gcc
.)
2. Опции для GCC. В руководстве GCC вы можете открыть главу «Вызов GCC», открыть раздел «Опции Code Gen» и нажать /
для поиска -fPIC
.Это краткое и техническое объяснение, но оно начинает ваше расследование в нужном месте.(Даже если объяснение не имеет смысла для вас сейчас, вы вернетесь к нему позже.)
3. Руководство по упаковке библиотек Debian от Uekawa. Однако наиболее яркий документ - это секрет.Это стандартный документ Debian, известный разработчикам Debian, который по непонятным причинам не упакован в Debian, поэтому не разработчики обычно не знают об этом. Здесь это.
В связанном документе рассказывается, как работают эти библиотеки, как их компилировать и связывать, и так далее.Однако, если вам нужно знать больше ....
4. Спецификация ELF.
В них подробно описывается формат, в котором создается GCC, и ld.gold
ссылки.
5. Автоинструменты. В какой-то момент ваше расследование может привести вас к автоинструментам GNU, а именно, Autoconf, Automake, Libtool, M4 и так далее.Я не верю, что Автоинструменты решат вашу проблему, и даже если они это сделают, я сомневаюсь, что они сделали бы это так, чтобы осветить ваше понимание процесса.Автоинструменты могут быть полезны, но в вашем конкретном случае я бы пока не стал использовать автоинструменты.Скорее сосредоточьтесь на других источниках.
По общему признанию, кто-то там, вероятно, знает более прямой ответ на ваш вопрос, но, на момент написания этой статьи, этот человек еще не опубликовал.Между тем, если вам нужно исследовать это для себя, мой ответ дал источники.Чтение тех, что я бы сделал.Хотя я и не программист на Haskell, прочитав их, я решил подобные проблемы с ссылками в прошлом.Это стандартные источники.
Чтение является наиболее познавательным и широко полезным в любом случае, поэтому оно не будет тратить ваше время.
(Я бы порекомендовал вам избегать принять мой ответ, даже если вы решите поднять его. Ваш вопрос - хороший вопрос. Мы хотим, чтобы этот вопрос оставался открытым до тех пор, пока он не получит более прямой ответ, чем у меня.)