Компилирането със символи за отстраняване на грешки изисква допълнителни библиотеки?

Имам любопитен проблем: Когато създавам обектни файлове с -g, линкерът внезапно се оплаква от липсващи символи от libbar, от които моят инструмент зависи индиректно чрез libfoo. Това не се случва без -g.

Тези символи изглежда идват от параметри по подразбиране към функции в libfoo, които са обекти от libbar. Тези функции обаче не се използват от моя инструмент.

Чудя се как тази допълнителна зависимост се причинява от компилации за отстраняване на грешки - възможно ли е тези символи за отстраняване на грешки да се произвеждат за всички символи, не само тези, които използвам, и за тези символи за отстраняване на грешки също са необходими параметрите по подразбиране?

Това е със Sun Studio 5.10 на Solaris.


person lytenyn    schedule 08.11.2012    source източник
comment
Използвате ли вградени функции в C?   -  person horsh    schedule 19.02.2013


Отговори (1)


Може би също така добавяте някои дефиниции, като DEBUG или нещо подобно. И тези дефиниции може да използват някои допълнителни символи от други библиотеки (например различни библиотеки за регистриране). Ако дадете кратък пример, също може да помогне

person Alexey    schedule 09.11.2012
comment
Не, кодът не използва DEBUG или друга препроцесорна магия. Всъщност NDEBUG дори не е зададен от нашата система за изграждане за компилации без отстраняване на грешки. - person lytenyn; 09.11.2012