Создавая плагин для браузера NPAPI в Linux x86 и x86_64, как мне убедиться, что он загружает правильную версию зависимых библиотек? - PullRequest
0 голосов
/ 20 июля 2011

Я пытаюсь создать плагин для браузера Linux, используя Firebreath, который работает на 32-битной и 64-битной 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 одновременно на одной машине?Как заставить плагин загружаться правильно или есть способ дальнейшей отладки этой проблемы?

1 Ответ

0 голосов
/ 20 июля 2011

Насколько я знаю, единственный способ сделать 32-битную сборку на 64-битной машине - это использовать кросс-компиляцию: http://www.vtk.org/Wiki/CMake_Cross_Compiling

Я никогда не пробовал, но внутри CMake выможет вероятно использовать CMAKE_SIZEOF_VOID_P , который будет 4 в 32-битном режиме, 8 в 64-битном.Вы можете добавить if в ваш скрипт cmake, чтобы установить правильные двоичные файлы в зависимости от их размера.

...