Я установил GCC 4.6.3 в несистемный путь в системе Mac, и он работает нормально. Однако GCC хочет использовать код из libgcc для всех двоичных файлов, которые я компилирую, и запуск otool -L показывает, что эти скомпилированные программы ищут libgcc_s.1.dylib в пути установки GCC. Я могу переопределить это, передав -static-libgcc, который просто компилирует необходимые данные в двоичный файл, и это нормально. Проблема в том, что это работает только с исполняемыми файлами, а не с общими библиотеками. Если я использую GCC для компиляции какой-либо сторонней библиотеки, которую я хочу использовать в одной из моих программ в качестве .dylib, эти библиотеки по-прежнему ищут libgcc_s.1.dylib в локальном пути установки GCC , даже если я указываю -static -libgcc! Нет необходимости говорить, что это проблема, поскольку нет гарантии, что эти библиотеки найдут libgcc при запуске в другой системе.
Я пробовал это с ffmpeg. Если я посмотрю на config.log, -static-libgcc наверняка используется. GCC просто не связывает libgcc статически с полученными dylibs. Я даже попробовал опции -nostdlib, -nostartfiles и -nodefaultlibs, но они были проигнорированы. Я снова проверил config.log, и они определенно есть!