Разница между -lgcc_s и gcc

В чем разница между связыванием gcc_s и gcc с помощью LDFLAGS? Является ли gcc_s статической библиотекой и gcc-библиотекой?

Потому что я искал решение, в котором упоминается ссылка на gcc, тогда как только gcc_s работает в моем случае. Я хочу знать реальную разницу.

< < скрытый символ `__name_here 'в/some/library/path.a(_filename.o) ссылается на DSO

В этом случае проблема обычно решается путем добавления либо "-l gcc", либо "gcc -print-libgcc-file-name" к флагам связывания (LDFLAGS). Однако, в отличие от других моих обычных платформ (i386, amd64, sparc64), этого было недостаточно. После многого избиения (честно говоря, это также происходит из музыки) я понял, что этот флаг необходим как при связывании libc, так и с окончательным исполняемым файлом. ссылка: http://people.defora.org/~khorben/200903.html

Ответ 1

libgcc_s.so - это общая библиотека, libgcc.a - статическая библиотека. Они не эквивалентны; может быть необходимо связать оба. libgcc_s содержит глобальные переменные, которые не должны иметь несколько копий в процессе; код в libgcc безопасен для ссылки несколько раз.