Предположим, что двумя объектными файлами являются a.o
и b.o
.Оба файла имеют main()
, но вы хотите использовать только main()
из a.o
.
. Сначала вы должны найти точное имя функции (это необходимо в случае, если имя искажено или_
предварительно).
Выполнить -
objdump -t | grep "main"
Это покажет символ, содержащий слово main
.Выберите подходящее имя функции.Теперь мы переименуем его в другое имя -
objcopy --redefine-sym main=some_rubbish_name_not_anywhere b.o
(замените main на любое имя символа, которое вы получили в приведенной выше команде)
Теперь вы можете связывать свои объектные файлы, как обычно, -
clang a.o b.o -o program
Другим способом будет полное удаление символа main
с b.o
(как предложено @ChrisBodd в комментариях) -
objcopy --strip-symbol=main b.o