Objective C till Linux

I förra inlägget skrev jag om Objective C till iPhone och att det går att kompilera delar av koden till Linux. För att kunna använda de nyaste finesserna i Objective C till Linux krävs att kompilatorn LLVM Clang används tillsammans med libobjc2.

Tyvärr är stödet för denna kombo för närvarande rätt knackig i Linux. Historien är lite tråkig (se avsnittet Background) eftersom det vore bättre för alla om utvecklare kunde komma överens om att samarbeta för att ta fram bra verktyg. Resultatet av att utvecklarna hos Apple och GCC inte kom överens är nu i alla fall att gcc bara stödjer en äldre dialekt av Objective C (motsvarande ios 4.x) medan clang (via libobjc2) stödjer de nya finesserna, som Automatic Reference Counting och Blocks.

Jag har testat att installera libobjc2 + clang via pakethanteraren både på gentoo och ubuntu, men det fungerar inte på någon av distributionerna! Istället får man kompilera det själv från c-kod. Gör så här:

  1. Avinstallera alla spår av gnustep och libobjc2.
  2. Installera clang via pakethanteraren (emerge eller apt)
  3. Ladda ner libobjc2 och kompilera med clang.
  4. Ladda ner gnustep-make och kompilera (med clang).
  5. Ladda ner och kompilera gnustep-base (med clang).

Ladda ner och packa upp de nyaste versionerna av libobjc2, gnustep-make och gnustep-base från länkarna ovan. Skriv sedan följande kommandon för att bygga (byt ut versionsnumren):

cd libobjc2-1.7
export CC=clang
make
sudo make install
sudo ldconfig

cd ..
cd gnustep-make-2.6.5
./configure
make
sudo make install

cd ..
cd gnustep-base-1.24.5
./configure
make
sudo make install
sudo ldconfig

Ovanstående kommandon kommer installera libobjc2 och gnustep under /usr/local. Där krockar de inte med filer som installerats via paket. Men det är ändå viktigt att varken libobjc2 eller gnustep finns installerat via paket.

cardtest.xz:

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

Avkoda ovanstående base64 block till cardtest.xz (t.ex. med kommandot openssl base64 -d > cardtest.xz <klistra in base64 och tryck Ctrl-d>) och packa upp med:

tar Jxf cardtest.xz

Gå sen in i katalogen cardtest och skriv make för att testa att bygga. Koden innehåller ett par enkla klasser från de första lektionerna av coding together. Det intressanta är att de är skrivna med den nya syntaxen som bara fungerar med ios 6.x. Lyckas du kompilera så är du hemma.

Advertisements

Om albertveli

Grävande programmerare.
Det här inlägget postades i Programmering. Bokmärk permalänken.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s