From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Banel Subject: Re: org-babel C math.h issue Date: Fri, 11 Mar 2016 19:52:25 +0100 Message-ID: <56E313E9.4010703@free.fr> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60554) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aeSAp-0004Z1-4b for emacs-orgmode@gnu.org; Fri, 11 Mar 2016 13:52:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aeSAl-0004PL-TT for emacs-orgmode@gnu.org; Fri, 11 Mar 2016 13:52:31 -0500 Received: from smtp1-g21.free.fr ([212.27.42.1]:34175) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aeSAl-0004Oi-LF for emacs-orgmode@gnu.org; Fri, 11 Mar 2016 13:52:27 -0500 Received: from [IPv6:2a01:e35:2e21:def0:1977:eda9:88ac:eab2] (unknown [IPv6:2a01:e35:2e21:def0:1977:eda9:88ac:eab2]) by smtp1-g21.free.fr (Postfix) with ESMTP id DFCB494022C for ; Fri, 11 Mar 2016 19:49:08 +0100 (CET) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org To summarize this thread: It seems there was an issue long ago. Version 5 of GCC magically fixed it. But it is still here for older compilers. ------------------------- To debug, execute the following piece of lisp code: (defadvice org-babel-eval (before xxx (cmd body)) "" (message "org-babel-eval : %s" cmd)) (ad-activate 'org-babel-eval) The actual compilation command will be displayed in the *Messages* buffer= . With your example, we get gcc -o /tmp/babel-8412zIw/C-bin-8412IZR -lm /tmp/babel-8412zIw/C-src-84127OL.c -------------------------- You are right, Oz, this can be fixed in line 147. But :flags is intended for flags like -g or -O, which need to appear before the source file. Probably we are missing an additional flag, which could be named :libs Then your example would be: #+BEGIN_SRC C :includes '( ) :libs -lm int i=3D9; printf("%d\n",(int)sqrt(i)); #+END_SRC -------------------------- Oz, do you think you would be able to provide a patch? The way to contribute is documented here: http://orgmode.org/worg/org-contribute.html#orgheadline1 Thanks for reporting. Thierry Le 06/03/2016 23:44, Oz Ben-Ami a =C3=A9crit : > Hi, > > I'm a new org user, and I'm sorry if I'm missing something obvious. > When executing a C code snippet with org-babel, that contains a math > function, I get the famous "undefined reference" errors. I tried > adding ":flags -lm", but that doesn't help. Looking at the code, it > seems the -lm flag is inserted in the wrong place, before the source > file. An easy change would be in line 147 of ob-C.el version > 8.3.4-634, moving "flags" to after the source file. This seems to > work, but I don't know if it would break anything else. > > A minimal working example, attached, includes the following snippet: > > #+BEGIN_SRC C :includes '( ) :flags -lm > int i=3D9; > printf("%d\n",(int)sqrt(i)); > #+END_SRC > > Note the issue disappears if constants are directly used rather than > variables, presumably because the function call is optimized away > entirely. > > Any thoughts are appreciated. > > Oz