LinuxのすべてをC ++プログラマーに伝える

しばらく前、私はRed Hat Linuxで作業していました。 そして今、長い休憩の後、再びペンギンの世界に戻る必要がありますが、たくさんの水が流れました! ここですべてをまとめると、C ++プログラマー向けの一種のFAQですが、Linuxティーポットですか?

行こう

一般的な質問。

1.人気のある主要なLinuxディストリビューションの違いは何ですか?

>主な違いはパッケージシステムです。 (deb、rpmなど)また、どのアーキテクチャで配布キットがリリースされますか。 (sl_bug)

>主な違い:パッケージマネージャー、ソフトウェアスイート、デフォルト設定。 (Evgeny_Shiryaev)

>(Evgeny_Shiryaevに加えて)ブート時に起動するようにサービスを構成する方法が異なる場合があります。 例は、Gentooの/etc/conf.d/netおよびUbuntuの/ etc / network / interfacesです。 また、各ディストリビューションは、ロード時に開始されるサービスのリストを指定する独自の方法によって特徴付けられます。 構成ファイル自体の編成方法が異なる場合があります(1つのファイルまたは多数のファイルと、それらを収集するマクロ)。 (エクストリーム)

>バッチシステム、インストーラー、システムスクリプト。 ソフトウェアバージョンおよびデフォルトのソフトウェアスイート。 (アーセニー)

2. BSDシステムがLinuxシステムよりも優先されるのはなぜですか?

>誰があなたに言った? ニーズに応じて選択する必要があります。 (sl_bug)

>個人的には、Linuxシステムに対するBSDシステムの大きな利点は見当たりません。 (Evgeny_Shiryaev)

>ハリウッドの質問。 システムの選択はタスクに依存します。 ただし、BSDでは、ネットワークスタックがより考慮されており、accf_httpやaccf_dataなどの便利なshnyazhkiがあります。 Linuxでは、動作が少し異なるTCP_DEFER以外の代替品はまだ見ていません。 (エクストリーム)

3.完全に無料のLinuxディストリビューションはありますか?

>はい(sl_bug)

>はい、それらのほとんど。 (Evgeny_Shiryaev)

>無償配布は絶対多数であると思います。 (エクストリーム)

>はい、ほとんど。 DebianまたはUbuntu。 またはFedora。 またはGentoo。 (アーセニー)

4.オープンソースソフトウェアと無料のLinuxカーネルに基づいて構築されているため、Linuxディストリビューションが一般的に支払われるのはなぜですか?

>通常支払われるのはサポートであり、配布ではありません(sl_bug)

>料金は、ディストリビューション自体ではなく、それをサポートするためのものです(更新、技術サポートなど)。 (Evgeny_Shiryaev)

>開発者にとって非常に重要な点:
SUSE SLESの有料配布パッケージでは、ソースコード付きのパッケージもサブスクリプションなしでは利用できません(src.rpm =メインストリームソース+配布更新、パッチ、仕様、構成)。

パッケージは、ソース(メインストリーム)tar.gz(せいぜいsrc.rpm opensuseから、依存関係の再描画およびその他の機能を使用して)からのみ再構築できます。
同時に、もちろん、更新のシステム全体が崩壊します。
そして、おそらく、他のシステムパッケージとの互換性、
バイナリから配信された同じパッケージを含みます。

おそらく、RedHatや他の有料ディストリビューターでも同様の状況です。 (qmax)

>(再び、Evgeny_Shiryaevに加えて)ここで、「オープンソース」と「フリー」は依然として異なる概念であることを覚えておく必要があります。 通常、OpenSourceライセンスは、それらの下で、またはそれらを使用してリリースされた製品の販売を禁止しません。 (エクストリーム)

>テクニカルサポート、ボックス、印刷...独自のコンポーネントが含まれており、完全にライセンスされたクリーンバージョンを取得するために削除します。 (アーセニー)

>あなたはサポートにお金を払う機会があります。 サポートなしのRHELが必要な場合は、CentOSを使用してください。 残り-Ubuntu(無料ですが、サポートの可能性があります)、OpenSUSE、Fedora(ここでは、一般に無料のオプションのみ)があります。 (kost_bebix)

5.多くのLinuxマシンをインストールする必要がある場合、配布キットを一度購入して、好きなだけマシンにインストールできるライセンスがありますか? または、完全に無料のLinuxが再びありますか?

> GNU / GPL(sl_bug)

>はい。 (Evgeny_Shiryaev)

>購入することさえできませんが、自由にダウンロードして、任意の数のマシンに置くことができます。 ただし、サポートに興味がある場合は、購入することをお勧めします。 (エクストリーム)

> DebianおよびUbuntuライセンスの条件の下で、それらを無制限の数のPCにインストールできます。 しかし、ロシアでは、箱入りバージョンを購入する必要があります。 理論的には、会社ごとに1つのボックスで十分です。 (inkvizitor68sl)

>はい、すべて(人気のあるものから):Fedora、Ubuntu、Linux Mint、OpenSUSE、Mandriva、CentOS、Debian、Slackware、Arch、Gentooは無料です。 (kost_bebix)

6.「国内メーカーから」のまともな分布はありますか?

> ALT Linuxが可能です(sl_bug)

>この質問には客観的に答えることはできません。 個人的に、私の意見では、いいえ。 しかし、「私たちの」ディストリビューションを見るなら、ALT Linuxを見てください。 (Evgeny_Shiryaev)

>あります。 たとえば、InfraLinux。 しかし、ほとんどの場合、彼らは支払われます。 (つまり価値がある)(inkvizitor68sl)

7. Linuxディストリビューションは、バイナリ実行可能レベルで互換性がありますか? Ubuntuからファイルを取得し、Fedora、FreeBSDで実行することは可能ですか?

> Ubuntu 32ビットからFedora 32ビットまで可能です(sl_bug)

> Linuxディストリビューションはい。 FreeBSDでLinuxバイナリを実行できますが、直接実行することはできません。 (Evgeny_Shiryaev)

>通常ははい。 バイナリがいくつかのプラグインライブラリを使用し、ソースシステム(バイナリの起動元)とターゲット(バイナリの起動元)がこれらのライブラリの異なるバージョンを持っている場合に困難が発生します。 しかし、静的に組み立てられたバイナリは非常に移植性があります。 例としては、Opera、ブラウザ用のAdobe Flashプラグイン、Skypeなどがあります。
FreeBSDでは、Linuxバイナリとの互換性を実現するためにLinux環境をエミュレートします。これは、私が思い出すように、Fedoraの通常のLinuxライブラリと、これを可能にするカーネルの特別なモジュールを使用します。 (エクストリーム)

> Linux-はい、必要な共有ライブラリがある場合。 Linuxバイナリ互換性>> BSDが存在します。 しかし、パッケージを取って起動するのは愚かなことです。ほとんどの場合、機能しません。詳細はわかりません。 (アーセニー)

>ほとんどのバイナリはどのディストリビューションでも実行されます。 一部のプログラムはこの形式で配布されます(たとえば、サイトからのfirefox)。 またはバスケット。 (inkvizitor68sl)

>まれに。 どのファイルに依存します。 .debパッケージから.rpmを実行するAlienユーティリティがありますが、これは松葉杖です。 C ++で記述する場合-「Opensuse Build Service」についてお読みください-これは、必要なすべてのシステムのためにプロジェクトをすぐに構築できる便利な場所です。 (kost_bebix)

8. C ++プログラムを作成するときに、ソースコードレベルでLinuxディストリビューション間の最大の互換性を確保するにはどうすればよいですか? どのライブラリを使用する必要がありますか?

>広範囲、例えばQt。 オープンソース メインリポジトリに含まれています。 (アーセニー)

> Qt(GooRoo)

>ほとんどすべてですが、個人的にはQtについて暖かく感じています。QtはWindowsおよびMacOSにもあります。 そのため、Googleは常に、特定のタスクごとにディストリビューションから抽象的なものを見つけます。 (kost_bebix)

>そうそう。 そして、実際には、主なものについて-Windowsでの書き込みの違いについて。 Windowsでは、いくつかのライブラリを使用するプログラムを作成しました。これらのライブラリをプログラムアセンブリに直接押し込み、1つの大きなピースを組み立てました。 ただし、Linuxでは、受け入れ方が異なります。プログラムを作成してから、ライブラリとそのバージョンが記述されている.deb / .rpmを作成します。

利益:
-Linuxでこのライブラリが既にインストールされている場合-何もダウンロードする必要はありません
-ライブラリに脆弱性がある場合-それらが更新され、それらを使用したすべての人が保護されます

問題は次のとおりです。
-ディストリビューションがライブラリの新しいバージョン(ブランチ)を使用することを決定した場合-すべてが壊れる可能性があります。 したがって、(最大のクロスディストリビューションが必要な場合)を見なければならない(kost_bebix)

9.特殊なカーネル呼び出しなど、非標準のソリューションが必要だとしましょう。 このシステムがこの呼び出しをサポートしていることを確認するにはどうすればよいですか?

>実験的に、またはメーリングリスト、フォーラム、開発者に尋ねる_ドキュメントを読んだ後_。 (アーセニー)

>カーネルがある場合、関数があります。 次に、詳細を確認する必要があります。 (kost_bebix)

10. C ++開発者向けのgccに代わる優れた手段はありますか? gccは常にディストリビューションに含まれていますか?

> 10. icc、常に(sl_bug)

>いいえ、常にではありません。 無料の代替手段がわかりません。 (アーセニー)

11.どのIDEおよびどのウィンドウマネージャの下で(または何と呼ばれますか?)C ++プログラミングに使用しますか? どのデバッガー?

> vim、gdb(sl_bug)

> IDE-Eclipseは人気があるようです(C ++およびJavaの友人プログラマーの言葉から、それは究極の真実であるふりをしません)。 デバッガー-gdb。 (エクストリーム)

> gdbはデバッガーです。 それには多くの異なるラッパーがあります。
たとえば、QtツールキットGUIを使用したプログラミングには、QtCreatorを使用します。
一般に、多くの異なるIDEがあります。 グーグル (アーセニー)

>デバッガーについてIDEについての質問とは別にデバッガーについて質問した場合、vim + gdb以外のものは得られないでしょう。 IDEは通常、ホットキーを使用してトレースを構成した環境、デバッグ情報の表示などを意味します。この場合、Qt Creator、KDevelop、Code :: Blocks、Eclipse、またはNetBeansをお勧めします。 (ロック)

> Eclipseでは、デバッグを行うのはあまり便利ではなく、速度が低下します。 NetBeansの速度が低下します。 KDevelopはでたらめです。 Qt Creatorは多かれ少なかれ使用できます。
VSにまともなLinuxの代替手段はありません:(特にデバッグの利便性に関して。(GooRoo)

> KDE4.3.1 + QtCreatorは良い解決策です。 私はEmacsを使用していますが、C ++で書くことはまれです。 (kost_bebix)

12. C ++用の他のツールは何ですか。 valgrindが優れたメモリリーク検出器であると聞いた。

> IDE-KDevelop、Eclipse、gdbデバッガーがあります。 次に、具体的に「必要なもの」も調べる必要があります。 (kost_bebix)

13. Linuxシステムで「デフォルト」で使用されるロシア語のエンコーディングは何ですか? LinuxカーネルはUNICODEをサポートしていますか? どのレベルで?

> utf-8(sl_bug)

>今日のUTF-8がデフォルトです。 少なくともCP866で、エンコーディングを問題なくデフォルトにすることができます。 (エクストリーム)

14. WindowsマシンでLinuxを実行する最も手頃なソリューションは何ですか? ポータブルUbuntuはどうですか? 誰もがそれを使用していますか、本格的な開発を行うことは可能ですか?

> vmware? (sl_bug)

>最善の解決策は、仮想マシン内でLinuxを実行することです。 これにはVirtualBoxを使用することをお勧めします。

> VMWareとVirtualBoxはすでにアドバイスしています。 最終無料(xtreme)

> LiveCD)が一般的には-virtualbox。 Wubi \ポータブルUbuntuポータブルは最良の選択肢ではありません。 (inkvizitor68sl)

> Linuxを実行するとはどういう意味ですか? 最も簡単な解決策は、Windowsを削除してUbuntu(kost_bebix)をインストールすることです

:-)

C ++ユーザープログラマーへの質問。

a1。 あなたは個人的にどのディストリビューションを使用し、なぜそれを選んだのですか?

> Debian、習慣。 かなり前に使い始めたので、変更したくありません。 gentoo(クールですが、ソースコードはすべて長い時間です)、centos / fedora(rpmは好きではありません)を試しました(sl_bug)

> Ubuntu。 配布キットのセットアップに関するすべての問題の少なくとも、良いパッケージマネージャーは、しばしば更新されます。 (ユーザーにとって)まだ良いのは、Fedora、OpenSUSE、およびほとんどのUbuntu派生製品です。 (Evgeny_Shiryaev)

> Debian、Ubuntu。 後者は、ほとんどすべてのハードウェアですぐに使用できます。最初のものは、サーバーに配置し、必要なパッケージのみを展開する、優れた、過負荷のないディストリビューションです。 (アーセニー)

> Mandriva Linux。 それは歴史的に起こりました:)ある人はそれを主婦のための分配と考え、そしてある意味では彼らは正しいです:)(GooRoo)

> Ubuntu。 人気があるからといって、すべてが開発されており(そうあるべきです)、主にその下で見られています。 (kost_bebix)

a2。 どのツールで開発していますか(もしあれば)?

> vim、gcc、gdb(sl_bug)

> Qt + Qt Creator、これ以上のものはありませんが、vim c emacsにはまだ達していません。 (GooRoo)

>おそらく、Emaxに夢中でなければ、QtCreatorの助けを借りて主導していたでしょう。 (kost_bebix)

a3。 C ++プログラマとしてのLinuxに適しているものとそうでないものは何ですか?

>私はそれが好きではありません:gccの手続き間最適化のモデル(加速しません)、標準の最適化は-O2(独自のまたは-O3を追加する必要があります)、boostおよび類似のライブラリーのカスケードエラーメッセージです。 (ロック)

> Linuxは私が取り組んできた最高のオペレーティングシステムですが、Windowsと比較してC ++での開発にはまったく適していません。 ただし、必要に応じて...;)(GooRoo)

簡単な場合は、答える前に答える質問の番号を入れてください。 そして、過労しないでください(私は不可能を望んでいることを知っています:)。

Source: https://habr.com/ru/post/J69299/


All Articles