Quali librerie di fare il necessario per collegare contro per un programma clang utilizzando blocchi

StackOverflow https://stackoverflow.com/questions/2297765

Domanda

ho scoperto (sotto) che ho bisogno di usare -fblocks durante la compilazione di codice che utilizza i blocchi.

Cosa biblioteca ho bisogno per collegare contro di lasciare che il linker _NSConcreteStackBlock determinazione? (Su Ubuntu 9.10 AMD64.)

chris@chris-desktop:~$ clang ctest.c 

ctest.c:3:25: error: blocks support disabled - compile with -fblocks or pick a
      deployment target that supports them
void call_a_block(void (^blockptr)(int)) {
                        ^
ctest.c:11:19: error: blocks support disabled - compile with -fblocks or pick a
      deployment target that supports them
    call_a_block( ^(int y) { 
                  ^
2 diagnostics generated.
chris@chris-desktop:~$ clang ctest.c -fblocks
/tmp/cc-4sPSeO.o: In function `main':
ctest.c:(.text+0x79): undefined reference to `_NSConcreteStackBlock'
collect2: ld returned 1 exit status
clang: error: linker command failed with exit code 1 (use -v to see invocation)
È stato utile?

Soluzione

Clang non fornisce ancora un modo semplice per utilizzare blocchi su piattaforme che non sono dotati di supporto del sistema operativo (ad esempio, SnowLeopard). Potete trovare qualche informazione in più sul progetto libdispatch qui:    http://libdispatch.macosforge.org/ e sul progetto del compilatore-rt (che fornisce il runtime blocchi) qui:    http://compiler-rt.llvm.org/ ma questo non è ancora ben confezionato per gli utenti finali Clang.

Se si vuole scavare un po ', il progetto del compilatore-rt non hanno il tempo di esecuzione blocchi in esso, ed è possibile utilizzare che per costruire una biblioteca che fornirà il NSConcreteStackBlock.

Altri suggerimenti

Utilizzare le istruzioni a http://mackyle.github.com/blocksruntime/ per costruire un libBlocksRuntime.a libreria che è possibile collegare con.

Installare il libBlocksRuntime su Ubuntu con:

sudo apt-get install llvm
sudo apt-get install clang
sudo apt-get install libblocksruntime-dev

Per compilare, includere la libreria e -fblocks:

clang ctest.c -fblocks -lBlocksRuntime

Questa è disponibile su altri sistemi operativi anche. FreeBSD e MidnightBSD entrambi includono clang e libBlocksRuntime.so

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top