Я создаю расширение firefox для linux firefox на 64-битной ubuntu. Расширение представляет собой программу javascript, которая вызывает функции в моей общей библиотеке (libcog.so), написанной на C, через механизм js-ctypes.
Я разобрался с основами работы расширения, но теперь, когда мне нужно вызывать функции в разделяемой библиотеке libcog.so через механизм js-ctypes, некоторые вопросы остаются неясными.
Я не могу заставить браузер Firefox сказать мне, является ли это приложение 32-битным или 64-битным режимом!
Позже: я думаю, что понял, что этот браузер Firefox является 64-битным приложением следующим образом:
Когда я помещаю 32-разрядную библиотеку libcog.so в каталог /usr/lib32, но не добавляю библиотеку libcog.so в каталог /usr/lib, консоль ошибок сообщает «libcog.so не найден».
Когда я помещаю 64-разрядную библиотеку libcog.so в каталог /usr/lib, но не библиотеку libcog.so в каталог /usr/lib32, консоль ошибок не сообщает «libcog.so не найден».
Я предполагаю, что это означает, что браузер Firefox является 64-битным приложением, но я не уверен на 100%.
Все вышеизложенное вызывает различные вопросы:
- Is javascript in a 64-bit browser running in 32-bit mode or 64-bit mode?
- Does this question even make sense for interpreted languages like js?
- Can javascript in 64-bit applications call 32-bit library functions?
- Should the js-ctypes mechanism even work in a 64-bit firefox browser?
- NOTE: The library does little so far, but it does call and return.
- If so, should function protocol always be specified default_abi?
- If so, when javascript calls js-ctype library functions, is it:
- calling 32-bit functions in 32-bit libraries in /usr/lib32?
- calling 32-bit functions in 32-bit libraries in /usr/lib?
- calling 64-bit functions in 64-bit libraries in /usr/lib32?
- calling 64-bit functions in 64-bit libraries in /usr/lib?
- or what?
Правильно ли я предполагаю:
# 1: js-ctypes в расширении Firefox в 32-битном браузере всегда будут вызывать функции в 32-битной общей библиотеке в /usr/lib32 (или другом каталоге 32-битной библиотеки)?
# 2: js-ctypes в расширении firefox в 64-битном браузере всегда будут вызывать функции в 64-битной общей библиотеке в /usr/lib (или другом каталоге 64-битной библиотеки)?
С обычными двоичными файлами компилируемого языка многие ответы на эти вопросы довольно очевидны. А интерпретатор... Не знаю... может быть, они почти все могут подделать или имитировать?