概要:は、ライブラリーは、(の.so)動的に異なるコンパイラでビルドされた別のライブラリをロードすることができます
私は1つのライブラリが動的に別の別のロードとコンパイラの差がある場合、私は思ったんだけどとのトラブルを抱えています根本的な原因。
問題の詳細:libgbm.soに
私のアプリケーションへのリンクを動的にlibpvrGBMWSEGL.soをロードしgbm_backend機能を要求します。
#libgbm.so
module = dlopen("/usr/lib/libpvrGBMWSEGL.so", RTLD_NOW | RTLD_GLOBAL)
dlsym(module, entrypoint)
提供された記号を使用しようとすると、セグメント違反が発生します。
分析:libpvrGBMWSEGL.soは独自のバイナリブロブとして提供さ
。
:迅速な分析は、それがリナロGCCで5.3から2016.02 一方、動的にそれを呼び出すライブラリlibgbmがBuildroot GCC 6.4.0> strings libgbm.so | grep GCC
GCC: (Buildroot 2017.11-git-00884-g7af8140-dirty) 6.4.0
で質問を構築した
> strings libpvrGBMWSEGL.so | grep GCC GCC: (Linaro GCC 5.3-2016.02) 5.3.1 20160113
を構築したことを示しています
これら2つのライブラリは、私が使用している方法で互換性がありますか?