Связать два объектных файла и разрешить символы в этих файлах

Я хотел бы создать file-12.o связав / загрузив два файла, file-1.o а также file-2.o так что ссылки на функции в file-1.o это может быть решено с помощью символов в file-2.o разрешены, но оставлены другие символы для разрешения при последующей загрузке.

Это возможно? Я использую набор инструментов gnu в Linux (Ubuntu 18.04).

Я пытался использовать ld -r -o file-12.o file-1.o file-2.o но вызовы функций (как видно из objdump -S) не разрешаются, т. е. инструкция callq по-прежнему показывает e8 00 00 00 00,

Что такое частичное связывание в GNU Linker? кажется, указывает на то, что это невозможно, или, по крайней мере, этот автор не знал, как это сделать ("Это также научило меня, что GCC не разрешает вызовы функций до окончательной ссылки, либо обоснование TODO, возможно заставить его разрешить?")

В качестве небольшого фона я пытаюсь сделать ссылку на hdr_histogram в среде узла 11/12. Как часть Performance Hooks, они начали использовать hdr_histogram, и мой аддон узла связывается с версией узла, а не с библиотекой, которую я хочу связать. Так что, если вы знаете, как для node-gyp расставить приоритеты для моей библиотеки перед библиотекой узлов в привязке приоритетов, это решение будет работать и для меня.

0 ответов

Другие вопросы по тегам