PDA

Просмотр полной версии : [Вопрос] Компиляция плагина под линукс



oukibt
19.01.2021, 10:14
Приветствую.

У меня возникла ошибка при попытке запустить скомпилированный плагин на линукс:


Loading plugin: UTFtoRussian.so
[09:37:13] Failed (plugins/UTFtoRussian.so: wrong ELF class: ELFCLASS64)
[09:37:13] Loaded 0 plugins.


После чего мне посоветовали перекомпилировать плагин для 32 bit с флагом -m32, что я собственно и сделал (компилировал в CodeBlocks). Далее получил эту ошибку:


[10:14:44] Loading plugin: UTFtoRussian.so
[10:14:44] Failed (plugins/UTFtoRussian.so: only ET_DYN and ET_EXEC can be loaded)


Но меня больше смутила не ошибка, а то, что вес файла составлял 2.5 КБ.
После чего мне посоветовали сменить шаблон и взять вот этот (https://github.com/Southclaws/samp-plugin-boilerplate/). С Ним файл стал весить чуть меньше, чем 30 КБ, но я все равно получал ошибки, вот та, на которой я остановился:


Failed (/usr/lib32/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by plugins/UTFtoRussian.so))


Лично мне не хотелось бы менять шаблон, и собственно вопрос: что делать с этой ошибкой (в шаблоне от DC и Double V) ?


[10:14:44] Loading plugin: UTFtoRussian.so
[10:14:44] Failed (plugins/UTFtoRussian.so: only ET_DYN and ET_EXEC can be loaded)

Daniel_Cortez
19.01.2021, 11:47
После чего мне посоветовали перекомпилировать плагин для 32 bit с флагом -m32, что я собственно и сделал (компилировал в CodeBlocks).
Я так понимаю, проект для CodeBlocks был создан вручную (и, скорее всего, был выбран неправильный тип цели построения - например, просто объектный файл или статическая библиотека вместо динамической)? Файл CMakeLists.txt там не просто так; если сгенерировать проект через CMake, флаг -m32 добавится автоматически и больше никаких проблем со сборкой возникнуть не должно.

oukibt
19.01.2021, 14:46
Я так понимаю, проект для CodeBlocks был создан вручную

Да, действительно так, не думал, что это может на что-то влиять. Проект скомпилировался, висит около 30 КБ, но такая же проблема как с этим (https://github.com/Southclaws/samp-plugin-boilerplate/) шаблоном. Ошибка


Failed (/usr/lib32/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by plugins/UTFtoRussian.so))


Пробовал исправить её следовав по инструкции отсюда (https://stackoverflow.com/questions/44773296/libstdc-so-6-version-glibcxx-3-4-20-not-found), но система утверждает, что более новые файлы уже установлены ( В том числе с нужный 3.4.21 https://cdn.discordapp.com/attachments/582915540285128725/801039784440496128/unknown.png)

oukibt
24.01.2021, 10:36
Собственно, проблема решена, установил на этот раз линукс как ОС, и никаких проблем не возникло