Może istnieć kilka wyjaśnień dla takich ciągów pojawiać się w pliku wykonywalnego:
- Mogłeś debugowania informacji spakowane w pliku wykonywalnego dla debugera w użyciu. Użyj
strip
, aby to usunąć, lub nie używaj opcji kompilacji -g
. Powinieneś także skompilować z NDEBUG
zdefiniowanym, aby wyłączyć kod debugowania i asercje. Zazwyczaj ma to miejsce w przypadku trybu Release, ale możesz chcieć dwukrotnie sprawdzić.
- Niektóre funkcje mogą używać
__FILE__
do śledzenia lub rejestrowania. __FILE__
rozwija się do nazwy pliku źródłowego w punkcie rozszerzenia makra, które może być źródłem lub plikiem nagłówkowym. Jedną z takich funkcji jest assert()
: w rzeczywistości jest to makro, które rozszerza się do testu i zawiera kod błędu, który zawiera bieżącą nazwę pliku.
- Niektóre źródła mogą mieć statyczne identyfikatory źródłowe w postaci macierzy
static char
do śledzenia wersji kodu źródłowego. Takie podejście jest dość przestarzałe, ale wiele starych źródeł wciąż je posiada.
Poszukaj takich rzeczy w plikach źródłowych lub plikach nagłówkowych, których nazwa pojawia się w pliku wykonywalnym i napraw problemy.
są to ścieżki do bibliotek, a nie ścieżki do plików nagłówkowych. Podczas kompilacji/połączenia dla dynamicznego łączenia bibliotek, kod musi wiedzieć, gdzie znajduje się biblioteka. Łączenie "statyczne" spowoduje, że kod będzie znacznie większy, ale usunie te ścieżki, ponieważ nie są już potrzebne. – user3629249