
Ubuntu日本語フォーラム

ログインしていません。
16年前に作ったC言語プログラムを、gccでコンパイルしたところ実行ファイルが作れませんでした。
共有ライブラリ(application/sharedlib)になってしまいます。
共有ライブラリでも実行はできますが、なぜ実行ファイルができないのでしょう?
18.04になってgccが変わったのでしょうか?
オフライン
自己解決しました。
コンパイルオプションに、-no-pieをつけてコンパイルしたら実行ファイルができました。
以下のサイトに記載されてました。
(Ubuntu recognizes executable as shared library and won't run it by clicking)
https://stackoverflow.com/questions/45329372/ubuntu-recognizes-executable-as-shared-library-and-wont-run-it-by-clicking
オフライン
自己解決の続きです。
以下のようなサイトがありました。
(c – gccは、application / x-applicationではなく、MIMEタイプapplication / x-sharedlibを作成します。)
https://codeday.me/jp/qa/20190515/828783.html
gccに-pieオプションをつけてコンパイルすると共有ライブラリが作成されるそうです。
実行ファイルよりも、共有ライブラリを実行した方が良いのでしょうか?
どういうメリットがあるのかがよくわかりません。
オフライン