プロジェクトでは、私の同僚はアプリケーションとリンクしている静的ライブラリ(liba.aなど)を作成します。arm-linuxで共有ライブラリにlibc.aをリンクするにはどうすればいいですか?arm-none-linux-gnueabi-gcc
liba.aでは、libc malloc()を所有者のバージョンに上書きします。
私は共有ライブラリlibs.soを作成し、これもappとリンクしています。
問題は私のlibs.soがアプリケーションにリンクしていて、libs.soで使用されているmalloc()がliba.aのlibmm.aにあり、 がlibc.soの標準ライブラリではありません。
次に、libc.aをlibs.soに静的リンクしたい、gccに-static -shared -fPICフラグを使用しました。
でも、私はいつもarm-2012.03/bin /../ lib/gcc/arm-none-linux-gnueabi/4.6.3 /../../../../ arm-none-linux libc/usr/lib/libc.a(dl-tsd.o)(。テキスト+ 0x14):R_ARM_TLS_LE32再配置されません。-gnueabi/bin/ld:arm-2012.03/bin /../ arm-none-linux-gnueabi /共有オブジェクトで許可されています。
誰もそれについて考えていますか?
ありがとうございます。
私は静的な共有を混在させないでください.... – Jeyaram
次のテキストはcodesurgeryからld.pdfからコピーされます: "-static共有ライブラリとリンクしません。これはプラットフォーム上でのみ意味があります ライブラリはサポートされています**この オプションは '-shared' **と一緒に使用できます。共有ライブラリは が作成されていますが、ライブラリの外部参照のすべてを解決する必要があります 静的ライブラリ" –
@DavidChyi:-staticと-sharedの両方が混在することができますが、それは良い考えではありません。一般的に、コンパイラには多くのオプションがあり、通常のアプリケーションには使用できません。カーネル、ブートローダ、マイクロコントローラのコードなどのコンパイルのような特別な場合に重要です。 –