[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Problems running C code in org-mode under Windows
From: |
Richard Stanton |
Subject: |
Re: [O] Problems running C code in org-mode under Windows |
Date: |
Tue, 27 Mar 2012 10:25:42 -0700 |
I've been tracing through, and a problem occurs when the compilation gets run,
which is at about line 155 in file ob-eval.el, inside function
org-babel-shell-command-on-region, where call-process region is called.
As far as I can see, at this point the command being called is
C:/emacs/emacs-24.0.94/bin/cmdproxy -c "gcc -o
\"c:/users/stanton[...]C-bin-10700opx\"
\"c:/users/Stanton[...]C-src-10700bfr.c\""
(where [...] just means I deleted some more path information, but it's all
valid).
If I execute this exact command at the command line, the compilation works
fine, and creates an executable file C-bin-10700opx.exe (note that gcc on
Windows automatically adds the .exe extension if you omit it). However, after
running the call-process-region command in the .el file, no executable file is
produced, and error-file has the contents
Access is denied
Not sure why this should be, but the compilation is not happening.
> -----Original Message-----
> From: Eric Schulte [mailto:address@hidden
> Sent: Monday, March 26, 2012 6:45 PM
> To: Richard Stanton
> Cc: address@hidden
> Subject: Re: [O] Problems running C code in org-mode under Windows
>
> Richard Stanton <address@hidden> writes:
>
> > Here's a simple org file that's supposed to run some C code and print the
> result:
> >
> > ----------------------
> >
> > * Sample C code
> >
> > #+name: RHS.c
> > #+begin_src C :noweb yes :tangle RHS.c
> > #include <stdio.h>
> > <<main>>
> > #+end_src
> >
> > #+name: main
> > #+begin_src C
> > int main(int argc, char *argv[]) {
> > int lst[argc-1];
> > int i;
> > for(i=1;i<argc;i++)
> > lst[i-1] = atoi(argv[i]);
> > for(i=1;i<argc;i++)
> > printf("%d ", lst[i-1] + 1);
> > printf("\n");
> > }
> > #+end_src
> >
> > #+call: RHS.c[:cmdline 8 7 6]()
> >
> > -------------------------
> >
> > It works fine on my Mac, producing the result:
> >
> > #+RESULTS: RHS.c[:cmdline 8 7 6]()
> > : 9 8 7
> >
> > On my PC, however, running Windows Vista, the output is blank and
> > there's a *Org-babel-error-output* buffer containing the message
> >
> > Access is denied.
> > 'c:/Users/stanton/AppData/Local/Temp/babel-11948MQP/C-bin-11948Nln'
> is
> > not recognized as an internal or external command, operable program or
> > batch file.
> >
> > There is a file called C-bin-11948Nln in that directory, but it has
> > length 0, suggesting that something is going wrong in the compilation
> > process. However, I can also see potential problems with the fact that
> > the file name does not end in .exe, so the Windows shell is not easily
> > going to recognize it as an executable anyway.
> >
> > Does anyone have this running OK under Windows? Alternatively, how can
> > I track down what's going wrong in more detail?
> >
> > Thanks.
> >
> > Richard Stanton
> >
>
> I don't have access to a windows machine so I can't debug this myself, but I
> would suggest stepping through the execution of the `org-babel-C-execute'
> function using edebug. This is done by first placing the cursor inside the
> `org-
> babel-C-execute' function, evaluating the function with C-u C-M-x, then
> executing a C code block. This should give you some idea of what is going
> wrong where.
>
> Best,
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte/