0

32 ビットおよび 64 ビット Linux で動作する Firebreath を使用して、Linux ブラウザー プラグインを構築しようとしています。

私の X11/projectDef.cmake には

target_link_libraries(${PROJECT_NAME}
    ${PLUGIN_INTERNAL_DEPS}
    "${CMAKE_CURRENT_SOURCE_DIR}/lib/libOIS-1.4.0_32.so"
    )

現在、別のビルドを行いたいときに、その行を手動で 32 から 64 に変更しているだけなので、おそらく間違っています。しかし、私の問題は、32 ビット ライブラリを使用してビルドし、コンパイルに成功した場合でも、Firefox でプラグインをロードしようとすると次のエラーが発生することです。

$ firefox
LoadPlugin: failed to initialize shared library /home/daniel/.mozilla/plugins/npBoomstickJavaScriptJoystickSupport.so [libOIS-1.4.0.so: wrong ELF class: ELFCLASS64]

アーキテクチャに応じて適切なライブラリを自動的に含めるように cmake を設定するにはどうすればよいですか? 同じマシンで x86 と x86_64 の両方を同時にビルドする方法はありますか? プラグインを正しくロードするにはどうすればよいですか? または、この問題をさらにデバッグする方法はありますか?

4

1 に答える 1

0

私の知る限り、64 ビット マシンで 32 ビット用のビルドを行う唯一の方法は、クロス コンパイルを使用することです: http://www.vtk.org/Wiki/CMake_Cross_Compiling

私は実際にこれを試したことはありませんが、CMake 内ではおそらくCMAKE_SIZEOF_VOID_Pを使用できます。これは 32 ビット モードでは 4、64 ビット モードでは 8 になります。if を cmake スクリプトに追加して、そのサイズに応じて正しいバイナリを設定できます。

于 2011-07-20T19:29:46.310 に答える