| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QtLua |
| Автор: CompWorm 2.7.2011, 17:47 | ||||||||||||
| Доброго времени. как я понял, QtScript устарел и поддержка его официально кончилась, хоть он и есть в поставке. поэтому и многим другим соображением хочу использовать внешние сценарии Lua для Qt проектов... для этого надо установить поддержку http://www.nongnu.org/libqtlua/ в репе у них лежит два файла на эту тему один *.tar.gz (в нём файлы для сборки) и один *.tar.gz.sig (назначение которого я не понял... может это типа плагина к какому-нибудь Eclips ?) итак имеем: Ubuntu 10.04 ядро 2.6.32-33 gnome 2.30.2 Qt 4.7.4 для начала я выяснил, что у меня нет самого Lua и заголовочных файлов. я поставил пакеты: lua5.1 liblua5.1-expat-dev liblua5.1-0-dev liblua5.1-0 liblua5.1-gnome-0 и в /usr/include/lua5.1 появились заголовочные файлы директория с Qt от версии к версии непредсказуемо скачет и в 4.7.4 qmake и прочие лежат у меня в ~/QtSDK/Desktop/Qt/473/gcc/bin простой запуск ./configure не видит нужных файлов, потому я сделал так:
как видим из лога, файлы qt и заголовки Lua нашлись, но дальше вылазит
назначение которого мне не ясно. lua_pushnil это вообще луавская функция, которая описана в lua.h.
но конфиг её не видит... пробовал и так
и сяк
и эдак
и всё равно тупняк... подскажите, как установить правильно QtLua пожалуйста. |
| Автор: kemiisto 2.7.2011, 20:05 |
| Он не может найти liblua.so. Это типа dll виндовой, нужна линкеру. Эта либа обычно запиливается пакетом liblua_цифры_dev. Обычно в названии и самой либы есть эти цифры. И обычно же, чтобы линкер находил либу без этих циферок, запиливается симлинк liblua.so -> liblua.5.so -> liblua.5.1-0.so. Надо посмотреть, куды сложились эти сошники, есть ли они. Вот это вариант близок к истине. |
| Автор: CompWorm 2.7.2011, 22:15 | ||||||
| kemiisto, большое спасибо за наводку. думал никто не ответит у меня установлена liblua5.1-expat-dev и liblua5.1-0-dev, как я писал выше, лучше я ничего не нашёл в синаптике... в папке /usr/lib/ есть таки ссылка liblua5.1.so,которая ссылается на файл со странным названием liblua5.1.so.0.0.0 там же я добавил, по твоему совету, на него ссылку с именем liblua.so и попробовал вот так:
то есть тупо не стал указывать имя библиотеки и конфигурация прошла на ура! ---------------------------------------- теперь о грустном. при выполнении make опять проблемы
глядя на фразу
я понимаю, что на этом всё... полный абзац и QtLua 1.2 устарел и не может интегрироваться в мою версию Qt 4.7.4 надеюсь, я ошибаюсь и что-то можно сделать, типа перекомпилить этот файл из новой Qt? |
| Автор: CompWorm 2.7.2011, 22:51 | ||
| попробовал щас svn скачать svn co svn://svn.savannah.nongnu.org/libqtlua/trunk/libqtlua собрать не могу нет конфига, в ридми бред какой-то написан. попробовал сделать в autoconf
- не получилось... как его собрать то? |
| Автор: CompWorm 2.7.2011, 23:14 | ||||
| что-то сделал, что сам не понял. итак в папке /home/user/QtSDK/libqtlua-1.2/ у меня обычный установочный набор, в /home/user/QtSDK/libqtlua-1.2/libqtlua/ скаченый svn. в папке /home/user/QtSDK/libqtlua-1.2/ я выполнил
и, о чудо! вроде без ошибок всё собралось! однако, не понятно, что именно и куда так как если сделать проверку
то 3 теста из 4 провалены. открываю qtcreator там ничего нового... ни примеров, ни хелпа |
| Автор: kemiisto 3.7.2011, 01:06 | ||||||
Я тут случайно SimplyMEPIS в виртуалке нашёл. Это типа Debian stable + пара своих репов. Qt 4.7.1 и liblua5 поставил из репов.
Релиз этой твоей либы устарел, как ты утверждаешь, так что я сразу пошёл в svn
Они перешли на CMake. Не беда:
У меня всё собралось без запинок. |
| Автор: CompWorm 3.7.2011, 10:25 | ||
| да, у меня так же собралось и с той химией, что я написал выше и с cmake. в конце cmake варианта я ставил make install вопрос - у тебя что-нибудь заработало после этого? я вот пишу в консоль
Добавлено через 8 минут и 47 секунд http://ru.wikipedia.org/wiki/QtScript во всяком случае, как мне кажется популярность ECMAScript ещё меньше чем Lua. её я по крайней мере видел в действии и использовал для скриптования уровней в Eufloria и MTA. Python конечно вне конкуренции, но он не такой смешной и как-то приелся |
| Автор: CompWorm 3.7.2011, 10:42 | ||||
make install устанавливает следующим образом
сделал симлинк от /usr/local/lib/libqtlua.so в /usr/lib/libqtlua.so ошибка изменилась на
не знаю к чему бы это |
| Автор: kemiisto 3.7.2011, 11:38 | ||||||
Так, конечно, делать не рекомендуется. Вообще система ищет эти самые *.so в папках, заданных в конфигурационных файлах /etc/ld.so.conf.d/*.conf + в переменной LD_LIBRARY_PATH. Раньше ещё (до 9.10) эту переменную можно было в .profile изменять. [url=https://help.ubuntu.com/community/EnvironmentVariables#File-location related variables]Сейчас уже нет[/url]. http://gentoo.theserverside.ru/book/ld_shared_libs_so_and_more.html неплохо на русском. Варианты:
И, вроде как, он понял мои намерения
но после копирования qtlua в /usr/local/lib
Хм... У меня работает. Запиливаю пруф! http://fastpic.ru/view/26/2011/0703/b5cebc65e9139ace6c14a2f6a11a6da7.png.html CompWorm, это DLL-Hell, если ты ещё не понял. В Linux его никто решать не собирается. You are welcome! |
| Автор: kemiisto 3.7.2011, 12:01 | ||
Ты всё неправильно понял.
|
| Автор: Severyanin 3.7.2011, 12:26 |
| CompWorm, , попробуй еще раз окончательно снести луа и qtlua и переставить. Я думаю, что сейчас у тебя в системе остались ошметки старой либы, поэтому линкер и не может функции из сошек вытянуть) |
| Автор: CompWorm 3.7.2011, 12:49 | ||||
| сделал немного по-другому, но с тем же положительным эффектом было что-то типа
в CMakeCache.txt нашёл строку и подписал CMAKE_EXE_LINKER_FLAGS:STRING=-Wl,-R/usr/local/lib пересобрал, получил:
теперь никаких симлинков, линкуется библа сразу. спасибо. по поводу ошибки при запуске скрипта погуглил что такое _ZN9QListData11detach_growEPii это проблема с самим Qt и в этом плане я не одинок. вечерком ещё поковыряюсь |