Уже скоро приедет долгожданный квадрокоптер ArDrone 2.0, и в преддверии этого события я решил посмотреть на официальный SDK для этой машинки. Наибольший интерес для меня вызывает его линуксовая часть.
Всё что касается линукса, и не только него, написано на старом добром Си с не менее старыми и добрыми мейкфайлами. Судя по приложенному гайду для разработчиков (Docs/ARDrone_Developer_Guide.pdf, если вдруг кто-то его не нашёл) разработчики SDK ориентируются на Ubuntu 10.04. С ним всё хорошо, чего я не могу сказать про свой OpenSuse.
Решение, впрочем, очень простое:
Всё что касается линукса, и не только него, написано на старом добром Си с не менее старыми и добрыми мейкфайлами. Судя по приложенному гайду для разработчиков (Docs/ARDrone_Developer_Guide.pdf, если вдруг кто-то его не нашёл) разработчики SDK ориентируются на Ubuntu 10.04. С ним всё хорошо, чего я не могу сказать про свой OpenSuse.
Решение, впрочем, очень простое:
- Ставим дополнительные пакеты с зависимостями. А Именно: libsdl-devel, libiw-devel, libxml2-devel. Но не исключаю, что вам может понадобиться что-то ещё.
- Идём в файлик Examples/Linux/Navigation/Build/Makefile и ищем там строку начинающуюся с переменной GENERIC_LIBS и дописываем в конец через пробел -lm. Таким образом мы добавляем библиотеку libm к списку библиотек линкера. Без этого маленького довеска билд не идёт, завершаясь сообщением:
usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../lib64/libiw.so: undefined reference to symbol 'floor@@GLIBC_2.2.5' /usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: note: 'floor@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding it to the linker command line /lib64/libm.so.6: could not read symbols: Invalid operation collect2: error: ld returned 1 exit status
- После проделанных приготовлений переходим, как написано в инструкции, в Examples/Linux и зовём там make. Всё, что получилось, make складывает в Examples/Linux/Build/Release. У меня там: ardrone_navigation, ardrone.xml, common, linux_sdk_demo, sym_ardrone_testing_tool, что вполне соответствует инструкции.