私はできるだけ多くの情報をldd
から隠したいので、動的にリンクする代わりに静的にリンクする方法を学習しています。私は、正しい構文がg ++は共有オブジェクトの静的バージョンをリンクできません
g++ -ldynamiclib -o exe files.cpp staticlib.a
であることを別のStackOverflowのポストから読んだこのように、私の現在のコンパイルコードは次のようになります。
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
私はこの方法がlibcryptoのために働くことをldd
で確認しました、それは私が持ってきた外部の図書館だからです。しかし、これは他のすべてのためにはまったく機能しません。ldd
を使用したときでもリストに載っているのを見ることができます。誰かがこれを行う正しい方法を知っていますか?
P.S.私はまた、静的なものや-Wl、-Bstaticの使用など、いくつかの他の選択肢を試してみました。どちらも動作できませんでした。それが私の構文なのか、まったく不可能なのかは分かりません。
私は「lddからできる限り多くの情報を隠す」必要性についてやや興味があります。たぶんXY問題? http://meta.stackexchange.com/a/66378 – renemilk
これは、プログラムを中断する方法に関する追加情報の実行可能ファイルを分析する単なる一歩です。リバースエンジニアリング。誰かがプログラムを壊そうとしたり、そこから情報を得ようとしていると仮定して、私はできるだけ隠すことを望んでいました。 –