Ich möchte so viele Informationen wie möglich aus ldd
verstecken, also lerne ich, wie man in Bibliotheken statisch verknüpft, anstatt sie dynamisch zu verknüpfen. Ich habe von einem anderen Stackoverflow Post gelesen, dass die korrekte Syntax istg ++ kann statische Version von gemeinsamen Objekten nicht verknüpfen
g++ -ldynamiclib -o exe files.cpp staticlib.a
So meine aktuelle Zusammenstellung Code sieht wie folgt aus:
STATIC_LIB=""
STATIC_LIB="$STATIC_LIB ${PATH}/libcrypto.a"
STATIC_LIB="$STATIC_LIB ${PATH}/libdl-2.5.so" // I couldn't find the .a version for this, so I tried doing it this way, and have also tried doing just -ldl
STATIC_LIB="$STATIC_LIB ${PATH}/libstdc++.a"
STATIC_LIB="$STATIC_LIB ${PATH}/libgcc.a"
STATIC_LIB="$STATIC_LIB ${PATH}/libc.a"
g++ -g -I${INCLUDE_PATH} -o executable file1.cpp file2.cpp $STATIC_LIB
Ich habe mit ldd
bestätigt, dass es auf diese Weise für libcrypto arbeitet, wie es eine externe Bibliothek ist, die ich hereingebracht habe. Jedoch funktioniert das überhaupt nicht für alles andere, und ich kann immer noch sehen, dass sie aufgeführt werden, wenn ich ldd
benutze. Kennt jemand den richtigen Weg, dies zu tun?
P.S. Ich habe auch einige andere Alternativen ausprobiert, wie zB -static oder -Wl, -Bstatic, und ich konnte keinen von beiden zum Laufen bringen. Nicht sicher, ob es meine Syntax ist oder ob es einfach nicht möglich ist.
Ich bin etwas neugierig auf die Notwendigkeit, so viele Informationen wie möglich von LDD zu verstecken. Vielleicht XY Problem? http://meta.stackexchange.com/a/66378 – renemilk
Es ist nur ein Schritt in der Analyse der ausführbaren Datei für zusätzliche Informationen darüber, wie das Programm zu brechen. Reverse Engineering. Angenommen, jemand versucht, das Programm zu unterbrechen oder Informationen zu erhalten, wollte ich so viel wie möglich verstecken. –