From: Sergey Matveev Date: Wed, 11 Nov 2020 16:39:59 +0000 (+0300) Subject: Линковка ld и порядок -l аргументов X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=f643c9b223e2d748230e9cebc46a6890dffea687;p=stargrave-blog.git Линковка ld и порядок -l аргументов https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking Работал я со своей C программой в LLVM/Clang/FreeBSD, работал в GNU/Linux, GCC 4.x, glibc. А сегодня в современной Ubuntu с GCC10 не мог собрать её. Упорно ругается что не может найти символы всякие, которые из библиотек берутся. Беглый поиск "а не бага ли это GCC?" не дал результатов. Начал тупо перебирать и менять местами все эти -l аргументы чтобы заработало, ибо надо успеть это сделать довольно срочно. Но позже нашёл вот статью в которой объясняет как именно обрабатываются -l, что магии там нет, всё довольно просто. А я просто совершенно не понимал (точнее подозревал, но в корне не верно) как линковщик работает. А всё так "сложно" не просто так -- а чтобы быстро работал ld. Можно указать пару аргументов (--{start,end}-group) и будет работать всегда и везде, грубо говоря, но с соответствующим performance overhead. ---