共有ライブラリを生成していると仮定すると、おそらく liblog4cplus.a
のバリアントが あなたが使用しているは -fPIC
でコンパイルされていません . Linux では、静的ライブラリからオブジェクト ファイルを抽出し、それらの再配置を確認することで、これを確認できます。
ar -x liblog4cplus.a
readelf --relocs fileappender.o | egrep '(GOT|PLT|JU?MP_SLOT)'
出力が空の場合、静的ライブラリは位置に依存せず、共有オブジェクトの生成には使用できません。
スタティック ライブラリには既にコンパイルされたオブジェクト コードが含まれているため、-fPIC フラグを指定しても役に立ちません。
liblog4cplus.a
のバージョンを把握する必要があります -fPIC
でコンパイル 代わりにそれを使用してください。
-fPIC
を追加 CMAKE_CXX_FLAGS
の終わりに そして CMAKE_C_FLAG
例:
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall --std=c++11 -O3 -fPIC" )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -fPIC" )
これで問題は解決しました。
独自のソフトウェアを Buildroot Linux パッケージに追加するにはどうすればよいですか?
gcc - /usr/bin/ld エラー:/usr/local/lib で <library> が見つかりませんが、ldconfig にリストされており、パスが ld.so.conf に追加されています