Haxe ohjelmointikieli asennus Linuxiin

xet7.org Suomeksi > Haxe ohjelmointikieli asennus Linuxiin

12.7.2014 Ohjeen kirjoituksen jatkaminen.
11.7.2014 Tehty asennus.

Haxe (
http://haxe.org ) on ohjelmointikieli, jolla voi Haxe-kielen muuttaa usealle muulle ohjelmointikielelle, kuten C++, PHP, Python, Javascript, Java ja Flash/ActionScript.

Tässä asennetaan se Linux Mint 16:sta 64bit versioon (testaan 17:sta asennusta myöhemmin).

Vanhoilla Haxe sivuilla on asennusta helpottava skripti jota ei ole vielä siirretty uusille sivuille:

Pura paketti ja suorita se näin:

chmod +x install-haxe.sh
sudo install-haxe.sh

Ja vastaile asennuskysymyksiin kyllä (yes) jne.

Sen jälkeen imuroi uusin nightly build haxesta, jossa on lisätty Python tuki: http://hxbuilds.s3-website-us-east-1.amazonaws.com/builds/haxe/linux64/haxe_latest.tar.gz
Muita buildeja löytyy osoitteesta http://builds.haxe.org

Pura haxe_latest.tar.gz ja nimeä kansio haxe-3.1.3 nimelle haxe, ja siirrä se se sitten paikoilleen:

sudo rm -rf /usr/lib/haxe
sudo mv haxe /usr/lib/
cd /usr/lib
sudo chown root:root haxe -R

Sitten asenna lisäkirjastot:

sudo haxelib setup

- paina enteriä oletushakemistoksi /usr/lib/haxe/lib

sudo haxelib install hxcpp
sudo haxelib install hxjava
sudo haxelib install hxcs

Tarvitsemme vielä lisäpaketteja C++ (cpp) käännöstä varten:

asm/errno.h virheen korjataksemme
kirjoita:

sudo apt-get install linux-libc-dev:i386 libc6-dev-i386

bits/c++config.h virheen korjataksemme
kirjoita:

sudo apt-get install gcc-4.8-multilib g++-4.8-multilib

Tee sitten kotikansioosi hakemisto esim:

mkdir haxetest
cd haxetest

Lisää sinne esimerkki tekstitiedosto HelloWorld.hx haluamallasi tekstieditorilla (nano, vim, emacs, pluma, gedit, kate jne):

class HelloWorld {
    static public function main() {
        trace("Hyvää päivää.");
    }
}

Käytä tabulaattoreita sisennykseen.

Käännä se sitten eri ohjelmointikielille. Haxe lisää koodiin myös omia apufunktioitaan lisätoimintojen toteuttamiseksi ja tarvittaessa tekee alihakemiston, jos tuloksena on useampi kuin yksi tiedosto.

1) C++:

haxe -main HelloWorld -cpp HelloWorld.cpp
cd HelloWorld.cpp
./HelloWorld    (suoritettavan tiedoston ajaminen)

2) Python:

haxe -main HelloWorld -python HelloWorld.py
python HelloWorld.py    (suoritettavan tiedoston ajaminen)

3) Javascript, ja testaus node.js:llä:

haxe -main HelloWorld -js HelloWorld.js
sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
node HelloWorld.js

4) Java:

haxe -main HelloWorld -java HelloWorld.java
cd HelloWorld.java
java -jar HelloWorld.jar  (suoritettavan tiedoston ajaminen)

5) C#:
haxe -main HelloWorld -cs HelloWorld.cs
cd HelloWorld.cs/bin
sudo apt-get install mono-complete     (tämä asentaa Mono-ohjelmointikielen useampine paketteineen)
mono HelloWorld.exe                                          (tämä käynnistää Monolla C# pohjaisen suoritettavan tiedoston)

6) PHP:

haxe -main HelloWorld -php HelloWorld.php
cd HelloWorld.php
sudo apt-get install php5-cli
php index.php

7) SWF (Flash):

haxe -main HelloWorld -swf HelloWorld.swf

- Vedä HelloWorld.swf-tiedosto tiedostonhallinnasta www-selainikkunan päälle, testi näkyy jos selaimessa on Flash-tuki.

8) ActionScript (Flash lähdekoodia varten):

haxe -main HelloWorld -as3 HelloWorld.as3
cd HelloWorld.as3
... ?

9) Neko (bytecode):

haxe -main HelloWorld -neko HelloWorld.n
neko HelloWorld.n

10) NME josta esim. Android käyttäen Googlen natiivi development kittiä:

sudo haxelib install nme
sudo haxelib run nme setup
nme build HelloWorld.hx android


cd
mkdir SDKs
cd SDKs
......
- pura paketti SDKs hakemistoon. Tällä hetkellä komento:

cd ~/haxetest
nme build HelloWorld.hx android

pysähtyy tällaiseen virheeseen:

Error: In file included from ./src/nme/utils/Endian.cpp:4:0:
include/nme/utils/Endian.h:28:3: error: 'HX_DO_RTTI_ALL' does not name a type
./src/nme/utils/Endian.cpp: In function 'void nme::utils::sMarkStatics(hx::MarkContext*)':
./src/nme/utils/Endian.cpp:41:2: error: '__mClass' is not a member of 'nme::utils::Endian_obj'
./src/nme/utils/Endian.cpp: In function 'void nme::utils::sVisitStatics(hx::VisitContext*)':
./src/nme/utils/Endian.cpp:48:2: error: '__mClass' is not a member of 'nme::utils::Endian_obj'
./src/nme/utils/Endian.cpp: At global scope:
./src/nme/utils/Endian.cpp:55:19: error: 'Class nme::utils::Endian_obj::__mClass' is not a static member of 'class nme::utils::Endian_obj'
./src/nme/utils/Endian.cpp: In static member function 'static void nme::utils::Endian_obj::__register()':
./src/nme/utils/Endian.cpp:64:13: error: '__mClass' was not declared in this scope
Error: Build failed

en tutkinut sitä enempää. NME:llä on iOS jne optioita myös.


Comments