Трябва да премахна неизползваните функции от голям C++ проект. След като прочетох известно време, използвах тази връзка: Как мога да разбера кои части от кода никога не се използват?
Компилирам на RedHat с помощта на makefiles. Добавих към компилатора флаговете:
-Wall -Wconversion -ffunction-sections -fdata-sections
и към линкера флаговете:
-Wl,-rpath,--demangle,--gc-sections,--print-gc-sections
По някаква досадна причина получавам резултата след манипулиране дори след използване на -- demangleопция. Например:
/usr/bin/ld: Removing unused section '.text._ZN8TRACABLED0Ev' in file 'CMakeFiles/oded.dir/oded.cpp.o'
/usr/bin/ld: Removing unused section '.text._ZN8TRACABLED1Ev' in file 'CMakeFiles/oded.dir/oded.cpp.o'
Така че имам 6000 имена на функции, които трябва да демонтирам и не мога да използвам extern C
.
Мога да напиша скрипт, за да го анализирам и да използвам c++filt, но търся решение, което ще накара линкера да демонтира функцията сам!
Някой знае ли дали съществува такова решение?