Я знаю, что порядок привязки в gcc важен для правильного определения символов; но теперь я вижу проблему с быстрым выпуском результирующего исполняемого файла. Я связываю объекты и архивы как
g++ -m32 a.o b.o ar1.a ar2.a -lm -lpthread -lcrypt -lz -pthread -o afast.out
против
g++ -m32 a.o ar1.a b.o ar2.a -lm -lpthread -lcrypt -lz -pthread -o aslow.out
Вторая версия работает в 2 раза медленнее. b.o фактически находится в архивации ar1.a, но ar2.o имеет ссылки на него, поэтому компоновщик жалуется, поэтому мне пришлось поставить b.o. В начале я делал b.o весь путь до конца связи, чтобы сделать правильный порядок зависимостей, хотя затем понял, что он работает даже при начале и даже быстрее.
Кто-нибудь испытал это? Является ли привязка объекта к файлу отличным от порядка архивации? Как может быть какое-либо влияние скорости?
получение аналогичных результатов с gcc3.4.6 или gcc4.1.2