6
votes

Quelles bibliothèques avez-vous besoin pour créer un lien contre un programme de clang utilisant des blocs

J'ai découvert (ci-dessous) que j'ai besoin d'utiliser -fblocks lors de la compilation de code qui utilise des blocs.

Quelle bibliothèque dois-je créer un lien contre pour laisser la liaison à résoudre _nsconcretstackblock? (Sur Ubuntu 9,10 AMD64.) P>

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)


0 commentaires

3 Réponses :


6
votes

Clang ne fournit pas encore de moyen simple d'utiliser des blocs sur des plates-formes qui n'ont pas d'assistance intégrée du système d'exploitation (par exemple, Snowleopard). Vous pouvez trouver d'autres informations sur le projet LibDisPatch ici: http://libdispatch.macosforge.org/ et sur le projet Compiler-RT (qui fournit les blocs d'exécution) ici: http://compiler-rt.llvm.org/ Mais cela n'est pas encore bien emballé pour les utilisateurs finaux de Clang.

Si vous souhaitez creuser un peu, le projet Compiler-RT dispose des blocs d'exécution des blocs et vous pouvez l'utiliser pour créer une bibliothèque qui fournira le nsconcretestackblock.


0 commentaires

4
votes

Utilisez les instructions de http://mackyle.github.com/blocksruntime/ pour construire un libblocksruntime.a la bibliothèque que vous pouvez relier avec.


0 commentaires

2
votes

Installer le libblocksRuntime sur Ubuntu avec:

clang ctest.c -fblocks -lBlocksRuntime


0 commentaires