Que las bibliotecas se necesita para enlace en contra de un programa de sonido metálico utilizando bloques

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

Pregunta

he descubierto (continuación) que necesito para usar -fblocks al compilar código que utiliza bloques.

¿Qué biblioteca necesito para enlace en contra de dejar que el enlazador _NSConcreteStackBlock resolución? (En 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)
¿Fue útil?

Solución

Sonido metálico aún no proporcionan una manera fácil de utilizar bloques en plataformas que no se han incorporado en el apoyo del sistema operativo (por ejemplo, SnowLeopard). Puede encontrar más información sobre el proyecto libdispatch aquí:    http://libdispatch.macosforge.org/ y en el proyecto compilador-rt (que proporciona los bloques de tiempo de ejecución) aquí:    http://compiler-rt.llvm.org/ aún no, pero esto está bien acondicionado para los usuarios finales Clang.

Si quiere cavar un poco, el proyecto compilador-rt sí tiene los bloques de tiempo de ejecución en ella, y se puede utilizar eso para construir una biblioteca que proporcionará la NSConcreteStackBlock.

Otros consejos

Utilice las instrucciones en http://mackyle.github.com/blocksruntime/ para construir una libBlocksRuntime.a biblioteca que se puede enlazar con.

Instalar el libBlocksRuntime en Ubuntu con:

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

Para compilar, incluir la biblioteca y -fblocks:

clang ctest.c -fblocks -lBlocksRuntime

Esto también está disponible en otros sistemas operativos. FreeBSD y MidnightBSD tanto incluyen sonido metálico y libBlocksRuntime.so

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top