две общие библиотеки (имеют один и тот же исходный код) не могут быть загружены на одном и том же пальце? - PullRequest
0 голосов
/ 17 октября 2010
  • Инструмент разработки: Sun Studio 11
  • Флаги: CXXFLAGS = -O2 -g

У меня есть две общие библиотеки, libA.so libB.so:

  • / A / root.cpp /A/a.cpp используются для генерации libA.so
  • / B / root.cpp /B/b.cpp используются для генерации libB.so
  • / A / root.cpp и /B/root.cpp являются идентичными

libA.so и libB.so будут динамически загружаться во время выполнения основной программы

при загрузке libA.so и последующей загрузке libB.so libB.so выведет следующую отладочную информацию: /B/b.cpp: ..... /A/root.cpp: ...

при загрузке libB.so и последующей загрузке libA.so libA.so выведет следующую отладочную информацию:

/A/a.cpp : .....
/B/root.cpp : ...

Почему?

1 Ответ

0 голосов
/ 17 октября 2010

Если вы попытаетесь скомпилировать это статически, компоновщик будет жаловаться на несколько определений. Похоже, загрузчик запутался и пытается изящно выйти из строя.

http://uw714doc.sco.com/en/SDK_cprog/CCCS_LinkEdit.html#CCCS_HdlMultDefdSyms

...