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.