ユーザーインターフェイスを使用してプログラムを.outファイルとしてコンパイルしようとしています。以前とまったく同じようにコンパイルしましたが、これを使用してコードを編集しませんでした
`pkg-config --cflags --libs gtk+-2.0`
16.04に戻って、コードはアプリケーションにコンパイルされ、ダブルクリックしてアプリケーションを起動できました。今回はできません。ダブルクリックすると、Gladeで開こうとし、エラーが表示されます。何らかの理由で、コンパイラまたはシステムは、ファイルが共有ライブラリであると想定しています。どうすればアプリケーションであることを伝えることができますか? gtkでコンパイルされていないCファイルのように、ターミナルで実行する必要があります。
18.04でアプリとしてコンパイルするにはどうすればよいですか?
Gcc-6.2以降、Ubuntuのgccは--enable-default-pieオプション(Position Independent Executable)を使用して構成されているため、これが共有オブジェクトです。 (-LSB共有オブジェクト
これに対するコンパイラのオーバーライドは-fno-pie
、リンカのオーバーライドは-no-pie
どうやらa.outファイルの場合、両方のオプションが一緒に機能しても、リンカー-no-pieを適用するだけで十分です。
また、ファイルマネージャーが要因である場合もあります。共有オブジェクトをexectubaleとしてマークおよび実行できるようにするものもあります。 Nautilusはもうありません(nemoは