gcc statique de la bibliothèque de liaison vs la liaison dynamique

Mon environnement de compilation est CentOS 5. J'ai une bibliothèque tierce appelée libcunit. Je l'ai installé avec les autotools et il génère à la fois libcunit.a et libcunit.so. J'ai ma propre application qui a des liens avec un tas de bibliothèques partagées. libcunit.a est dans le répertoire courant et libcunit.so et d'autres bibliothèques partagées sont dans /usr/local/lib/. Quand je compile comme:

gcc -o test test.c -L. libcunit.a -L/usr/local/lib -labc -lyz

- Je obtenir un lien d'erreur:

libcunit.a(Util.o): In function `CU_trim_left':
Util.c:(.text+0x346): undefined reference to `__ctype_b'
libcunit.a(Util.o): In function `CU_trim_right':
Util.c:(.text+0x3fd): undefined reference to `__ctype_b'

Mais quand je compile avec .so comme:

gcc -o test test.c -L/usr/local/lib -lcunit -labc -lyz

il compile fine et fonctionne très bien aussi.

Pourquoi donne-t-il erreur lorsque lié statiquement à libcunit.a?

OriginalL'auteur bala1486 | 2013-04-16