Использование Mono. Как установить свежий MonoDevelop? - Raspberry Pi Forums


Изучаю возникшие вопросы кроссплатформенности проектов на c# и .net.
В связи с этим решил покрутить mono на raspberry pi 3.
С установкой свежей mono 5.2.0.215 особых проблем не возникло.
Начал делать как описано в первоисточнике http://www.mono-project.com/download/#d ... n-raspbian
Для ленивых опишу процесс. Сначала добавляем репозиторий:

code: select all

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3fa7e0328081bff6a14da29aa6a19b38d3d831ef echo "deb http://download.mono-project.com/repo/debian raspbianjessie main" | sudo tee /etc/apt/sources.list.d/mono-official.list 
Далее инсталлируем компилятор и что к нему нужно:

code: select all

sudo apt-get install mono-devel sudo apt-get install mono-complete sudo apt-get install mono-dbg sudo apt-get install mono-xsp4 
В первоисточнике ещё предлагается установить referenceassemblies-pcl и ca-certificates-mono, но этого делать не нужно, т.к. они ставятся командами выше.

Далее предлагается проверить всё ли установлено правильно, для чего следует воспользоваться примерами проектов отсюда: http://www.mono-project.com/docs/gettin ... no-basics/
У меня без проблем заработали все проекты, кроме последнего gtk# hello world. Проект не захотел собираться из-за отсутствия библиотеки gtk-sharp-2.0.
Для установки библиотеки (точного названия я же не знаю) зохожу в add / remove software и в строке поиска ввожу gtk#.
В окне результатов поиска вижу подходящий вариант: gtk# 2.12 suite, cli bindings gtk+.
Ставлю галку и устанавливаю вместе со шлейфом других подтянувшихся файлов. После этого повторяю компиляцию проекта gtk# hello world - работает!
Потом заодно поставил gtk# 3.0 suite, cli bindings gtk+ - пусть будет до кучи.

Но это всё разработка командной строкой (без gui), а я не любитель. Так что надо установить monodevelop.
Захожу на первоисточник: http://www.monodevelop.com/download/. А там написано, что для установки новой версии monodevelop надо сначала установить пакет flatpak. Ибо сам пакет monodevelop имеет расширение .flatpakref. Однако пакета flatpak в репозитории нет, так что захожу в первоисточник http://flatpak.org/getting.html и на своё горе не нахожу варианта для raspbian.
Попытался по описанию варианта для ubuntu в лоб добавить репозиторий и установить flatpak, но получил ошибку что-то типа "под вашу ось варианта нет".
Как быть? Самому что ли собирать исходники? Нашёл тему про сборку вручную, но сам пока не пробовал: https://nanite.co/2016/07/01/building-m ... erry-pi-3/

Решил попробовать собрать из исходников. Захожу в первоисточник: https://github.com/mono/monodevelop/releases.
Там, как оказалось, уже версия 7.1.0.1278. Скачиваю архив monodevelop-monodevelop-7.1.0.1278.tar.gz.
Далее распаковываю его и запускаю конфигуратор:

code: select all

tar xfv monodevelop-monodevelop-7.1.0.1278.tar.gz cd monodevelop-monodevelop-7.1.0.1278 ./cofigure
Выбираю вариант main (просто жму enter). В результате нескольких запусков cofigure получаю, что необходимо установить fsharp, cmake, libssh2.
Первые два устанавливаю так:

code: select all

sudo apt-get install fsharp sudo apt-get install cmake 
Пакет libssh2 ищу в add / remove software. Оказывается, что ssh2 client-side library у меня уже стоит, но это libssh2 рантайм. Догадываюсь, что нужны исходники. Выбираю ssh2 client-side library (development headers) и инсталирую её с подтянувшимися файлами. После этого снова запускаю cofigure и получаю, что всё ОК:
pi@raspberrypi:~/downloads/monodevelop-monodevelop-7.1.0.1278 $ ./configure

configuring package: main
-------------------------
configuration options:
running aclocal ...
running automake --foreign ...
running autoconf ...
running ./configure --enable-maintainer-mode --enable-compile-warnings --with-macarch=i386 --prefix=/usr/local ...
configure: warning: unrecognized options: --enable-compile-warnings
checking bsd-compatible install... /usr/bin/install -c
checking whether build environment sane... yes
checking thread-safe mkdir -p... /bin/mkdir -p
checking gawk... no
checking mawk... mawk
checking whether make sets $(make)... yes
checking whether make supports nested variables... yes
checking whether uid '1000' supported ustar format... yes
checking whether gid '1000' supported ustar format... yes
checking how create ustar tar archive... gnutar
checking whether enable maintainer-specific portions of makefiles... yes
checking mono... /usr/bin/mono
checking mcs... /usr/bin/mcs
checking fsharpc... /usr/bin/fsharpc
checking pkg-config... /usr/bin/pkg-config
checking update-mime-database... /usr/bin/update-mime-database
checking msgfmt... /usr/bin/msgfmt
checking msgmerge... /usr/bin/msgmerge
checking pkg-config @ least version 0.9.0... yes
checking unmanaged_dependencies_mono... yes
checking mono... /usr/bin/mono
checking dmcs... /usr/bin/dmcs
checking glib_sharp... yes
checking gtk_sharp... yes
checking glade_sharp... yes
checking monodoc... yes
checking cmake... /usr/bin/cmake
checking libssh2... yes
checking generated files newer configure... done
configure: creating ./config.status
config.status: creating build/makefile
config.status: creating build/macosx/makefile
config.status: creating contrib/makefile
config.status: creating contrib/icsharpcode.decompiler/makefile
config.status: creating external/makefile
config.status: creating src/makefile
config.status: creating src/core/makefile
config.status: creating src/core/mono.texteditor/makefile
config.status: creating src/core/monodevelop.core/makefile
config.status: creating src/core/monodevelop.projects.formats.msbuild/makefile
config.status: creating src/core/monodevelop.ide/makefile
config.status: creating src/core/monodevelop.startup/makefile
config.status: creating src/core/monodevelop.texteditor.tests/makefile
config.status: creating src/tools/makefile
config.status: creating src/tools/mdhost/makefile
config.status: creating src/tools/mdtool/makefile
config.status: creating src/tools/mdmonitor/makefile
config.status: creating src/addins/makefile
config.status: creating src/addins/monodeveloperextensions/makefile
config.status: creating src/addins/monodeveloperextensions/nunit/makefile
config.status: creating src/addins/monodevelop.unittesting/makefile
config.status: creating src/addins/monodevelop.unittesting.nunit/makefile
config.status: creating src/addins/monodevelop.unittesting.nunit/nunitrunner/makefile
config.status: creating src/addins/monodevelop.unittesting.nunit/nunit3runner/makefile
config.status: creating src/addins/versioncontrol/monodevelop.versioncontrol/makefile
config.status: creating src/addins/versioncontrol/monodevelop.versioncontrol.subversion/makefile
config.status: creating src/addins/versioncontrol/monodevelop.versioncontrol.subversion.unix/makefile
config.status: creating src/addins/versioncontrol/monodevelop.versioncontrol.subversion.tests/makefile
config.status: creating src/addins/versioncontrol/monodevelop.versioncontrol.git/makefile
config.status: creating src/addins/versioncontrol/monodevelop.versioncontrol.git.tests/makefile
config.status: creating src/addins/versioncontrol/makefile
config.status: creating src/addins/csharpbinding/makefile
config.status: creating src/addins/csharpbinding/autotools/makefile
config.status: creating src/addins/csharpbinding/aspnet/makefile
config.status: creating src/addins/ilasmbinding/makefile
config.status: creating src/addins/vbnetbinding/makefile
config.status: creating src/addins/changelogaddin/makefile
config.status: creating src/addins/monodevelop.gtkcore/makefile
config.status: creating src/addins/monodevelop.gtkcore/libstetic/makefile
config.status: creating src/addins/monodevelop.gtkcore/libsteticui/makefile
config.status: creating src/addins/texttemplating/makefile
config.status: creating src/addins/texttemplating/monodevelop.texttemplating/makefile
config.status: creating src/addins/aspnet/makefile
config.status: creating src/addins/monodevelop.autotools/makefile
config.status: creating src/addins/monodevelop.designersupport/makefile
config.status: creating src/addins/monodevelop.webreferences/makefile
config.status: creating src/addins/deployment/makefile
config.status: creating src/addins/deployment/monodevelop.deployment/makefile
config.status: creating src/addins/deployment/monodevelop.deployment.linux/makefile
config.status: creating src/addins/monodevelop.gettext/makefile
config.status: creating src/addins/monodevelop.regextoolkit/makefile
config.status: creating src/addins/gnomeplatform/makefile
config.status: creating src/addins/macplatform/makefile
config.status: creating src/addins/windowsplatform/makefile
config.status: creating src/addins/windowsplatform/windowsapicodepack/makefile
config.status: creating src/addins/windowsplatform/windowsapicodepack/core/makefile
config.status: creating src/addins/windowsplatform/windowsapicodepack/shell/makefile
config.status: creating src/addins/windowsplatform/windowsplatform/makefile
config.status: creating src/addins/monodevelop.assemblybrowser/makefile
config.status: creating src/addins/monodevelop.sourceeditor2/makefile
config.status: creating src/addins/xml/makefile
config.status: creating src/addins/monodevelop.refactoring/makefile
config.status: creating src/addins/monodevelop.debugger/makefile
config.status: creating src/addins/monodevelop.debugger.gdb/makefile
config.status: creating src/addins/monodevelop.debugger.soft/makefile
config.status: creating src/addins/monodevelop.debugger.soft/monodevelop.debugger.soft/makefile
config.status: creating src/addins/monodevelop.debugger.soft/monodevelop.debugger.soft.aspnet/makefile
config.status: creating src/addins/monodevelop.hexeditor/makefile
config.status: creating src/addins/monodevelop.docfood/makefile
config.status: creating src/addins/monodevelop.packagemanagement/makefile
config.status: creating src/addins/monodevelop.packagemanagement/monodevelop.packagemanagement.tests/makefile
config.status: creating tests/makefile
config.status: creating tests/unittests/makefile
config.status: creating tests/userinterfacetests/makefile
config.status: creating tests/testrunner/makefile
config.status: creating tests/ide.tests/makefile
config.status: creating tests/macplatform.tests/makefile
config.status: creating tests/monodevelop.csharpbinding.tests/makefile
config.status: creating makefile
config.status: creating monodevelop
config.status: creating mdtool
config.status: creating monodevelop.pc
config.status: creating monodevelop-core-addins.pc
config.status: creating monodevelop-core-mac-addins.pc
config.status: creating monodevelop.spec
config.status: creating po/makefile
config.status: creating man/makefile
config.status: creating theme-icons/makefile
configure: warning: unrecognized options: --enable-compile-warnings

configuration summary

* installation prefix = /usr/local
* version = 7.1
* version label = 7.1 preview
* compat version = 7.0
* c# compiler = /usr/bin/dmcs
* mono class library development extensions: yes
* version control providers:
* subversion (unix): yes
* git: yes
* platform bindings: gnome
* unit tests: no
* release builds: no

type `make' compile monodevelop
configuration summary
---------------------

monodevelop has been configured
prefix = /usr/local
profile = default

packages included in build:
main
Однако далее запускаю компиляцию:

code: select all

make
и получаю ошибки:
pi@raspberrypi:~/downloads/monodevelop-monodevelop-7.1.0.1278 $ make
make[1]: вход в каталог «/home/pi/downloads/monodevelop-monodevelop-7.1.0.1278/main»
making in external
make[2]: вход в каталог «/home/pi/downloads/monodevelop-monodevelop-7.1.0.1278/main/external»
make[2]: Цель «all» не требует выполнения команд.
make[2]: выход из каталога «/home/pi/downloads/monodevelop-monodevelop-7.1.0.1278/main/external»
making in .
make[2]: вход в каталог «/home/pi/downloads/monodevelop-monodevelop-7.1.0.1278/main»
if test -f "./buildinfo"; cp "./buildinfo" "./build/bin/buildinfo"; else ./../scripts/configure.sh gen-buildinfo "./build/bin"; fi
/usr/bin/git failed
makefile:1140: ошибка выполнения рецепта для цели «build/bin/buildinfo»
make[2]: *** [build/bin/buildinfo] Ошибка 1
make[2]: выход из каталога «/home/pi/downloads/monodevelop-monodevelop-7.1.0.1278/main»
makefile:666: ошибка выполнения рецепта для цели «all-recursive»
make[1]: *** [all-recursive] Ошибка 1
make[1]: выход из каталога «/home/pi/downloads/monodevelop-monodevelop-7.1.0.1278/main»
makefile:31: ошибка выполнения рецепта для цели «all-recursive»
make: *** [all-recursive] Ошибка 1
Не понимаю, в чём может быть дело?

В первоисточнике http://www.monodevelop.com/download/ предлагается версия 6.1.2.44, как стабильная.
Скачал её, распаковал, запустил конфигуратор. Оказалось, что ей всего ранее установленного мало:
pi@raspberrypi:~/downloads/monodevelop-monodevelop-6.1.2.44 $ ./configure

configuring package: main
-------------------------
configuration options:
running aclocal ...
aclocal: warning: autoconf input should named 'configure.ac', not 'configure.in'
running automake --foreign ...
automake: warning: autoconf input should named 'configure.ac', not 'configure.in'
automake: warning: autoconf input should named 'configure.ac', not 'configure.in'
running autoconf ...
running ./configure --enable-maintainer-mode --enable-compile-warnings --with-macarch=i386 --prefix=/usr/local ...
configure: warning: unrecognized options: --enable-compile-warnings
checking bsd-compatible install... /usr/bin/install -c
checking whether build environment sane... yes
checking thread-safe mkdir -p... /bin/mkdir -p
checking gawk... no
checking mawk... mawk
checking whether make sets $(make)... yes
checking whether make supports nested variables... yes
checking whether uid '1000' supported ustar format... yes
checking whether gid '1000' supported ustar format... yes
checking how create ustar tar archive... gnutar
checking whether enable maintainer-specific portions of makefiles... yes
checking mono... /usr/bin/mono
checking mcs... /usr/bin/mcs
checking fsharpc... /usr/bin/fsharpc
checking pkg-config... /usr/bin/pkg-config
checking update-mime-database... /usr/bin/update-mime-database
checking msgfmt... /usr/bin/msgfmt
checking msgmerge... /usr/bin/msgmerge
checking pkg-config @ least version 0.9.0... yes
checking unmanaged_dependencies_mono... yes
checking mono... /usr/bin/mono
checking dmcs... /usr/bin/dmcs
checking glib_sharp... yes
checking gtk_sharp... yes
checking glade_sharp... yes
checking monodoc... yes
checking gnome_sharp... no
checking gnome_vfs_sharp... no
checking gconf_sharp... no
configure: error: cannot enable gnome platform without gnome-sharp-2.0
Пока тормознулся.


raspberrypi



Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'