У меня есть статическая библиотека (lib.a) и программа, которая ссылается на нее. В библиотеке нет точки входа, которая всегда вызывалась бы перед ее использованием, но мне нужно выполнить фрагмент кода очень рано в программе (желательно до запуска main ()). Поэтому я подумал, что буду использовать статическую переменную моего собственного класса. Я добавил новый исходный файл, который содержит что-то вроде:
#include <MyClass.h>
static MyClass myVar;
Конструктор MyClass будет выполнять мой код. Когда я связываю lib.a и пытаюсь выполнить «nm», я получаю информацию, что myVar там есть. Однако, когда я связываю свою программу и пробую «nm», я не вижу myVar. Когда я помещаю этот кусок кода в существующий файл, символ виден в конечном исполняемом файле. Это почему? Может ли компоновщик пропустить объектный файл из библиотеки lib.a в этом случае? Я знаю, что на переменную не ссылаются извне (она не может быть статической), но она должна выполнять код самостоятельно, и поэтому я не понимаю, почему ее следует удалить.
На случай, если что-то изменится, я использую старый компилятор SunPro.