Как я могу заставить GCC связать статическую библиотеку? - PullRequest
1 голос
/ 06 января 2012

Я пишу статическую библиотеку: libA.a.У меня есть другое приложение, которое называется BoBo и не использует никаких функций в libA.a.Я хочу объединить libA.o в Bo, тогда я мог бы вызывать некоторые вещи в libA.a другими методами, когда Bo работает.

Я пишу makefile так: gcc B.c -o B.o -lA -u symbol_A.Здесь -u из руководства GCC:

http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

Он предлагает использовать -u для принудительного связывания неиспользуемой библиотеки, а символ_A - это некоторый символ в libA.a

Ноэто не работаетПосле связывания я не могу найти какие-либо вещи из LibA.a в Bo

Может кто-нибудь дать мне подсказку?

ps Я использую GCC 3.4.4, eclipse + CDT под windows и Boбудет развернут под Linux.

1 Ответ

1 голос
/ 06 января 2012

Объяснение флага -u из GCC означает следующее:

Если у вас есть символ или переменная, которая определена в вашем источнике, сообщите GCC, чтобы сделать вид, что он не определен, поэтому он принимает определение такой переменной или функция из библиотеки, которую вы связываете.

Так что, если у вашего B.c нет ничего, что может быть определено в libA.a, флаг -u вам не поможет, поскольку symbol_A не нужен B.c и тому же токену B.o, так будет просто проигнорировано.

...