Blocage de Clang sous Linux?

Clang a une très bonne extension nommée block, apportant le véritable mécanisme de fonction lambda à C. Par rapport à block, les fonctions nestedes de gcc sont assez limitées. Cependant, essayer de comstackr un programme sortingvial cc :

 #include 

 int main() {
     void (^ bonjour) (nul) = ^ (nul) {
         printf ("Bonjour, bloquez! \ n");
     };
     Bonjour();
     retourne 0;
 }

avec clang -fblocks cc , j’ai eu

 /usr/bin/ld.gold: /tmp/cc-NZ7tqa.o: dans la fonction __block_literal_global: cc (.rodata + 0x10): erreur: référence indéfinie à '_NSConcreteGlobalBlock'
 clang: error: la commande linker a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation)

semble que je devrais utiliser clang -fblocks cc -lBlocksRuntime , mais j’ai

 /usr/bin/ld.gold: erreur: impossible de trouver -lBlocksRuntime
 (le rest est le même que ci-dessus)

Des indices?

Sur Ubuntu Linux:

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

test.c :

 #include  int main() { void (^hello)(void) = ^(void) { printf("Hello, block!\n"); }; hello(); return 0; } 

comstackr:

 clang test.c -fblocks -lBlocksRuntime -o test ./test Hello, block! 

fonctionne bien

A en juger par quelles bibliothèques vous devez vous lier pour un programme de clang utilisant des blocs, il semble qu’il n’y ait pas de moyen facile de résoudre ce problème , du moins au début de 2010.