お知らせ

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

#1 2014-05-26 00:03:41

dairin
新しいメンバ
登録日: 2012-02-14

ARMコンパイラにて作成した共有ライブラリ

Ubuntu12.04 にて開発を行っており、CodeSourceryG++_Liteのarm-none-linux-gnueabi-gccのクロスコンパイラで作成した共有ファイルが動作しない問題が発生しております。

この共有ファイル自体はUbuntu10.04で動作した実績があります。
この共有ファイルは、コンパイルオプションで--fpu=SoftVFPが付いていたので、arm-linux-gnueabihfがdefaultのUbuntu12.04では動作しない事が分かりました。

ただ、その--fpu=SoftVFPを外して共有ファイルを作成しても動作しないのです。
エラーになってくれれば対処しようもあるのですが、実行ファイル作成時には何のerror, warningも発生せず、実行時に何も動作しないのです。
動作しない原因として考えらることは何が考えられるでしょうか?
ちなみに、Ubuntu上にて共有ファイルを作成すると問題なく動作しました。

オフライン

 

#2 2014-05-26 15:48:16

korin0000
新しいメンバ
登録日: 2011-10-21

Re: ARMコンパイラにて作成した共有ライブラリ

Ubuntu12.04 にて開発を行っており、CodeSourceryG++_Liteのarm-none-linux-gnueabi-gccのクロスコンパイラで作成した共有ファイルが動作しない問題が発生しております。
この共有ファイル自体はUbuntu10.04で動作した実績があります。
この共有ファイルは、コンパイルオプションで--fpu=SoftVFPが付いていたので、arm-linux-gnueabihfがdefaultのUbuntu12.04では動作しない事が分かりました。

CodeSourcery(現Sourcery CodeBench)のFAQに以下の様な項目がありました。
How do I get the compiler to generate VFP instructions?
https://sourcery.mentor.com/sgpp/lite/arm/portal/kbentry27

単純に、無料開発版のSourcery CodeBench Liteがhard float ABI に対応してないだけではないでしょうか?

ちなみに、Ubuntu上にて共有ファイルを作成すると問題なく動作しました。

Ubuntu上で正しく動作するのに、わざわざクロスコンパイラ上でライブラリを作成する理由が良く分かりません。
単に興味本位ってところでしょうか?

オフライン

 

#3 2014-05-27 01:01:12

dairin
新しいメンバ
登録日: 2012-02-14

Re: ARMコンパイラにて作成した共有ライブラリ

korin0000 による投稿:

CodeSourcery(現Sourcery CodeBench)のFAQに以下の様な項目がありました。
How do I get the compiler to generate VFP instructions?
https://sourcery.mentor.com/sgpp/lite/arm/portal/kbentry27

単純に、無料開発版のSourcery CodeBench Liteがhard float ABI に対応してないだけではないでしょうか?

見落としておりました。ありがとうございました。
とりあえず、評価版で試してみます。

ちなみに、Ubuntu上にて共有ファイルを作成すると問題なく動作しました。
Ubuntu上で正しく動作するのに、わざわざクロスコンパイラ上でライブラリを作成する理由が良く分かりません。
単に興味本位ってところでしょうか?

興味本位ではなく、以前(Ubuntu10.04当時)に、CodeSourcery上で作成したライブラリが、Linux上で作成したライブラリよりも動作負荷が1割~2割程度少なかったからです。
でも、当時と同じソースコードでコンパイルしなおしても、今はhard floatが標準なので、それだけで動作負荷が削減できそうですね。

オフライン

 

Board footer

Powered by FluxBB