2017-12-14 4 views
1

私はKali Linuxでプログラムを作っています。私はKaliだけで動作させたいと思っています。ユーザーのOSが定義された変数os_platformをチェックウィンドウと、後でスクリプト内であるかどうかをチェックするためにKali Linuxのマクロは何ですか?

#if defined(_WIN32) || defined(_WIN64) 
    #define os_platform THISisWINDOWS 

が、私はGoogleで検索して、どこでも、私はちょうどすることができます:私は好きで、それを行うには、Cを使用することができますKali Linuxのマクロを見つけられません。もしそうなら:

#if defined(__linux__) 
    #define os_platform THISisLINUX 

これは、UbuntuのようなどのようなタイプのLinuxでも、それらのLinuxesでもかまいません。 Kali Linuxのマクロは何ですか?

+1

私は今日好奇心が強いというだけで、なぜですか? – schaiba

+0

異なるLinuxのインストール(似たようなリリースからの)はバイナリ互換性があり、特に配布系の中では、 '#ifdef 'を使ってコンパイル時のチェックをするのは良い方法ではないでしょう。バイナリをUbuntuや普通のDebianよりもKaliで別々にコンパイルするのはなぜですか? – hyde

答えて

1

配布用のマクロはありません。あなたは特定のファイルのために/etcを見ることによってどのような分布であるかを見るために "スニフテスト"しかできません。それでも偽装することができます。

マクロが最初に存在する理由は、LinuxがBSDとWindowsとは根本的に異なるためです。そのため、必要な区別です。 KaliとDebianの違いはかなり主観的ですが、KaliはDebianに基づいています。ほとんどのLinuxディストリビューションは、コンパイラが同じカーネルとヘッダーを使用しているので、実際にはかなり似ています。

/etc/redhat-releaseのようなものは、配布固有のものなので、そのようなものを探します。これは#ifdefとしてテストすることはできませんが、configureスクリプトに入力する必要があります。

+0

ありがとう!それについては決して考えなかった。私はマクロでもやっていました.../etc/shadow /が存在するかどうかを見なければなりません! –

+1

あなたが必要とする機能、または必要なライブラリの観点から、強制的に配布するのではなく、あなたのアプリケーションを制限することを考えてみましょう。たぶん、Kaliフォークはいつか、99.9%だけど名前は違うので、あなたは編集を拒否しています。依存関係がないかどうかを確認し、一致していれば、少なくともコンパイルすることはできません。 – tadman

0

おそらく、特定の配布名のファイル/etc/issueをチェックして、ファイルポインタを使用して正確な名前&を抽出し、それがUbuntuかKaliか他のLinuxマシンであれば比較してください。

関連する問題