2017-08-26 14 views
1

LazarusまたはFree Pascalのコンパイル済みバイナリにlibcライブラリを含めるにはどうしますか?私はLibcの新しいバージョンで私のアプリケーションをコンパイルすると、例えば古いライブラリでは動作しないので、共有ライブラリを使いたくないのです。Lazarus/Free Pascalコンパイル済みバイナリにlibc.soをインクルードする方法はありますか?

私は古いLinuxバージョンで自分のアプリケーションを実行すると、次のエラーが端末に示されているので、私はこれをしたい:

./app:/lib64/libc.so.6:バージョン `GLIBC_2.14を'が見つかりません

感謝を( ./appで必要)。

+1

簡単な答えはノーです。 –

+0

-Xtコンパイルオプションを試しましたか? "-Xt静的ライブラリとのリンク(-staticはリンカーに渡されます)" – Scooter

+0

あなた自身で研究する予定がない限り、単純な答えはいいえです。 –

答えて

1

LazarusまたはFree Pascalのコンパイル済みバイナリにlibcライブラリを含めるにはどうしますか?

コンパイラが-staticフラグをサポートしており、ダイナミックライブラリの使用を必要としない場合は、お使いのバイナリは、(の中古部品)のコピーが含まれますlibc.a

Documentationは、リンク行に-Xtを追加することであろうことを示唆してそれを行う。

アプリケーションを新しいバージョンのLibcでコンパイルすると、古いライブラリでは機能しないため、共有ライブラリを使用したくありません。

これは(新しいバージョンで実行され、古いバージョンで実行されている)一般的にはサポートされていません。完全に静的なバイナリを使用すると、他の不思議な理由で失敗することがよくあります。

chroot -edビルド環境を使用するか、VM内でサポートする予定の最も古いOSをビルドすることをお勧めします。

+0

libcは特別ですが、静的にリンクしたい場合は、libcのini/finalizationの呼び出しを起動コードで修正する必要があります。 –

関連する問題