parametros instalar ejecutar con compilar c gcc compiler-construction wolfram-mathematica mathematica-8

instalar - GCC instalado. Mathematica aún no compilará a C



instalar gcc en ubuntu (3)

Es una pena que el único error que está viendo sea $ Failed , eso no es terriblemente útil; Me pregunto si tal vez hay algunos problemas de permisos de archivos o directorios.

Me estoy ejecutando en Linux, no Mac, así que no estoy seguro de si mi configuración es "lo suficientemente cerca" o no. En mi máquina, su comando Compile tiene éxito y genera un archivo .Mathematica/ApplicationData/CCompilerDriver/BuildFolder/blackie-desktop-5077/compiledFunction1.so en mi directorio de inicio. ¿Hay alguna forma de que pueda encontrar un directorio .Mathematica asociado con su ID de usuario, y ver si existe y es escribible por mathematica?

Además, puede verificar si se está accediendo o no a "gcc" marcando el tiempo de acceso al archivo de /usr/bin/gcc antes y después de llamar a Compile . Desde un shell del sistema operativo puede hacer ls -lu /usr/bin/gcc o desde Mathematica quizás Import["!ls -lu /usr/bin/gcc", "Text"]

Estoy ejecutando Mathematica 8 en una MacOSX, tratando de compilar incluso el programa más simple para C. Todo lo que tiene que ver con C simplemente no funciona en Mathematica. Tengo instalado GCC 4.2; Incluso lo he reinstalado varias veces con XCode. Esto es lo que estoy haciendo y los errores que estoy recibiendo:

Primero, siempre evalúo el comando

Needs["CCompilerDriver`"]

Si configuro el objetivo de compilación en C,

c = Compile[ {{x}}, x^2 + Sin[x^2], CompilationTarget -> "C"];

Aparece un error que dice: Compilar :: nogen: no se pudo crear una biblioteca a partir de la función compilada.

Si intento crear una biblioteca,

demoFile = FileNameJoin[{$CCompilerDirectory,"SystemFiles","CSource","createDLL_demo.c"}]; lib = CreateLibrary[{demoFile},"testLibrary"]

Recibo un mensaje $ Falló . Wolfram dice que esto se debe a que no tengo un compilador de C instalado. Me resulta difícil de creer porque cuando corro

CCompilers[]

Me dice que tengo instalado GCC: {{"Nombre" -> "GCC", "Compilador" -> CCompilerDriver''GCCCompiler`GCCCompiler, "CompilerInstallation" -> "/ usr / bin", "CompilerName" -> Automático}}

Además, la terminal dice que también tengo instalado GCC. Cualquier ayuda sería apreciada. Me gustaría compilar Mathematica para C.


En esta respuesta, recopilaré algunos pasos de depuración para problemas similares, para referencia futura. Siéntase libre de editar / mejorarlos.

Si compilar a código C no funciona desde Mathematica 8,

  1. Compruebe que tiene instalado un compilador C compatible y funciona (lo obvio).

    Tenga en cuenta que el compilador no necesariamente tiene que estar en la PATH , al menos en Windows / Visual Studio no es así.

  2. Compruebe que Mathematica reconoce el compilador

    << CCompilerDriver` CCompilers[]

    enumerará los compiladores conocidos por Mathematica.

  3. Compruebe qué comandos ejecuta Mathematica para compilar el código C generado :

    Compiler`$CCompilerOptions = {"ShellCommandFunction" -> Print}; Compile[{{x}}, x^2, CompilationTarget -> "C"];

    Tenga en cuenta que con "ShellCommandFunction" -> Print los comandos no se ejecutarán, por lo que tendrá que volver a establecer Compiler`$CCompilerOptions en {} después de que se complete este paso para permitir la ejecución del comando nuevamente.

  4. Verifique los resultados / errores del compilador:

    Compiler`$CCompilerOptions = {"ShellOutputFunction" -> Print}; Compile[{{x}}, x^2, CompilationTarget -> "C"];

Estos dos últimos pasos con suerte le darán suficientes pistas para proceder. Con esta información puede verificar si las rutas correctas de biblioteca / inclusión se pasan al compilador (en el caso de gcc / icc, mire la opción -L que especifica las rutas de biblioteca y la opción -I que especifica las rutas incluidas). Luego, compruebe si los archivos obligatorios de inclusión y biblioteca están presentes en esas rutas.


Si obtiene Compile :: nogen, puede ver la salida del compilador configurando ShellOutputFunction-> Print right en la expresión Compile:

c = Compile[ {{x}}, x^2 + Sin[x^2], CompilationTarget -> {"C", "ShellOutputFunction"->Print}];

En general, así es como se pueden pasar opciones a la llamada CreateLibrary subyacente, cambiando CompilationTarget -> "C" a CompilationTarget -> {"C", options}. Establecer Compiler` $ CCompilerOptions funciona también, pero esta técnica tiene la ventaja de no establecer una variable global.