связать два объектных файла и разрешить символы в этих файлах - PullRequest
1 голос
/ 17 мая 2019

Я хотел бы создать 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 расставить приоритеты для моей библиотеки перед библиотекой узлов в связи с приоритетом, это решение будет работать и для меня.

...