У меня есть общий объект gateway.so(в Linux/C). И приложение a.out использует его.
ВОПРОС A
Я предполагаю: когда запускается процесс a.out, загрузчик загружает gateway.so(я не использую dl-функции, такие как dlopen
). Таким образом, все разрешения символа времени выполнения на gateway.so будут происходить в памяти. Вам не нужно больше обращаться к gateway.so с диска.
Я прав?
Итак, я не могу заменить gateway.so обновленной версией, в то время как a.out работает, правильно?
ВОПРОС B
Другой связанный с этим вопрос: однажды, когда я заменил и устарел версию файла gateway.so, я получил сообщение
"a.out: не удается разрешить символ 'Test_OpenGateway'"
Какой программный компонент (loader/linker...) отправляет этот вывод? Этот компонент выполняется как часть одного и того же контекста процесса?