Если у меня есть один и тот же символ, определенный в объектном файле и в библиотеке, компоновщик GNU берет символ из объектного файла. Рассмотрим этот пример:
g++ -L"dir/to/lib" -o Executable Test.o foo.o -lMyLib
Если я определил функцию foo
с одинаковой сигнатурой как в foo.cpp, так и в исходном файле, из которого была скомпилирована «MyLib», то компоновщик GNU всегда предпочитает ту из первой, если я использую этот порядок. 1005 *
Это поведение GNU toolchain специфично? Знаете ли вы из других линкеров, которые ведут себя так же? Это где-нибудь задокументировано (документация GNU, стандарт C ++)? Я ничего не мог найти ...
Я хотел бы использовать эту функцию, чтобы заменить / смоделировать определенные функции при выполнении модульного тестирования (так называемый шов ссылок).