Я использую GNU make для создания группы статических библиотек, используя неявные правила make для этого. Эти правила запускают команду ar (1) для обновления библиотеки/архива. Профилирование показало, что время сборки будет уменьшено, если я использовал параметр -j для выполнения параллельных заданий во время сборки.
К сожалению, в руководстве GNU есть раздел http://www.gnu.org/software/make/manual/html_node/Archive-Pitfalls.html, который в значительной степени говорит, что make не обеспечивает защиту concurrency для запуска ar (1), и, таким образом, он может (и делает) коррумпирован архив. В руководстве далее дразнит, что это может быть исправлено в будущем.
Одним из решений этого является использование http://code.google.com/p/ipcmd, который в основном блокирует семафор перед запуском команды, таким образом, сериализуя ar (1) команды создания архива. Это конкретное решение для меня не очень хорошо, потому что я создаю инструменты для кросс-компиляции, основанные на mingw, в Windows.
Есть ли более простое или лучшее решение этой проблемы?