お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2019-08-09 17:25:58

ukituriboku
メンバ
登録日: 2018-07-26

Ubuntu 18.04.1のgcc 7.4.0でコンパイルすると実行ファイルができない

16年前に作ったC言語プログラムを、gccでコンパイルしたところ実行ファイルが作れませんでした。
共有ライブラリ(application/sharedlib)になってしまいます。
共有ライブラリでも実行はできますが、なぜ実行ファイルができないのでしょう?
18.04になってgccが変わったのでしょうか?

オフライン

 

#2 2019-08-09 21:31:37

ukituriboku
メンバ
登録日: 2018-07-26

Re: Ubuntu 18.04.1のgcc 7.4.0でコンパイルすると実行ファイルができない

自己解決しました。
コンパイルオプションに、-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

オフライン

 

#3 2019-08-09 22:01:28

ukituriboku
メンバ
登録日: 2018-07-26

Re: Ubuntu 18.04.1のgcc 7.4.0でコンパイルすると実行ファイルができない

自己解決の続きです。
以下のようなサイトがありました。
(c – gccは、application / x-applicationではなく、MIMEタイプapplication / x-sharedlibを作成します。)
https://codeday.me/jp/qa/20190515/828783.html
gccに-pieオプションをつけてコンパイルすると共有ライブラリが作成されるそうです。
実行ファイルよりも、共有ライブラリを実行した方が良いのでしょうか?
どういうメリットがあるのかがよくわかりません。

オフライン

 

Board footer

Powered by FluxBB