macos makefile valgrind darwin

macos - hacer fallar durante la instalación de Valgrind



makefile darwin (4)

Aparentemente, para compilar en una Macintosh, valgrind necesita el archivo /usr/include/mach/mach_vm.defs para estar presente. Si bien no he podido encontrar referencias específicas a que mach_vm.defs parte de XCode específicamente, parece que la mayoría de los contenidos habituales de /usr/include/mach se instalan cuando XCode se instala.

Si por alguna razón no puede instalar XCode en su máquina, puede obtener la mayoría de los archivos de origen para ese directorio en particular de esta parte del sitio web de código abierto de Apple .

Estoy intentando instalar Valgrind en una Mac con Snow Leopard pero obtengo un error. Esto es lo que estoy escribiendo en la Terminal.

$ curl -O http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2 $ md5sum valgrind-3.8.1.tar.bz2 $ tar -xjvf valgrind-3.8.1.tar.bz2 $ cd valgrind-3.8.1 $ ./configure $ make

Este es el error que recibo.

Making all in coregrind make[2]: *** No rule to make target `/usr/include/mach/mach_vm.defs'', needed by `m_mach/mach_vmUser.c''. Stop. make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2

¿Cómo puedo corregir este error?


Asegúrese de instalar las herramientas de línea de comandos.

xcode-select --install


Desde que se implementó el sistema de protección de integridad del sistema en OSX, el usuario, ni siquiera como root, puede modificar /usr . Por lo tanto, es imposible modificar / usr / include / mach para agregar los archivos necesarios. La única alternativa ahora es editar el propio makefile.

El coregrind/Makefile debe estar ubicado en coregrind/Makefile , y los archivos mach deben estar ubicados cerca de /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ (Reemplace MacOSX10.12.sdk con la versión apropiada de OSX).

Debería haber un símbolo llamado am__append_17 definido alrededor de la línea 160 (podría estar en otra parte para diferentes versiones).

Debería verse algo como esto:

am__append_17 = / /usr/include/mach/mach_vm.defs / /usr/include/mach/task.defs / /usr/include/mach/thread_act.defs / /usr/include/mach/vm_map.defs

Reemplace cada instancia de /usr/include con /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ , para que se vea como:

am__append_17 = / /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/mach_vm.defs / /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/task.defs / /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/thread_act.defs / /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/vm_map.defs

Después de esto, valgrind debería compilar correctamente


La mejor manera de compilar valgrind correctamente es usar el comando ''xcode-select --install'' como se menciona en la respuesta anterior. Sin embargo, como hackeo subóptimo, puede compilarlo descargando los siguientes archivos de OSX / mach source en / usr / include / mach (cree este directorio):

mach_vm.defs task.defs thread_act.defs vm_map.defs

Es un truco ligeramente sucio, pero debería comenzar si realmente no desea descargar / instalar los grandes archivos originales de Xcode.