Я думаю, что проблемы, о которых вы говорите, связаны с GNU, а не с gcc. Был добавлен новый алгоритм хеширования для поиска символов. Вы должны скомпилировать все с помощью -Wl, - hash-style = both или -Wl, - hash-style = sysv (по умолчанию) в gcc4, тогда у вас не будет никаких проблем. По памяти Redhat был единственным дистрибутивом, достаточно отсталым для включения стиля хэша gnu по умолчанию.
Если это действительно ваша проблема, то вы можете сказать:
objdump -t foo | grep ".hash"
Который будет пустым, если не присутствует хеш sysv.