statically linking release build on mac

Patrick Stinson patrickstinson.lists at gmail.com
Thu May 22 20:09:17 EDT 2008


Here is the error:
code 4, error number 0 (Symbol not found: _Py_DebugFlag
  Referenced from: /Library/Application
Support/Digidesign/Plug-Ins/Play.dpm/Contents/MacOS/Play
  Expected in:
/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
)

On Thu, May 22, 2008 at 10:13 AM, Patrick Stinson <
patrickstinson.lists at gmail.com> wrote:

> I get an error reporting an unfound symbol using a statically linked
> release build of python2.5 on a OSX-Tiger. This works fine on leopard, where
> the system default python is version 2.5.1 - the same version that I'm using
> to link to.
>
> Sorry, I'm currently screwing with my configs and don't have a build to run
> (my bad :) anymore, but the error is basically this:
>
> Undefined symbol: _PY_DebugFlag
> Referenced From: <my exe>
> Expected in: <core audio framework lib image location>
>
> I moved the system python frameworks out of the frameworks path for the
> build and run just to make sure that they weren't somehow getting in the
> way. I found that that symbol is defined in pydebug.h for both release and
> debug builds. Also, I discovered that I can fix the problem with some of my
> targets (I have both standalone exe and plugin lib versions of my app code)
> by referencing the variable directly like this: int mine = Py_DebugFlag,
> which fixes that symbol but then the next symbol in pydebug (PY_VerboseFlag)
> is reported as undefined. After some playing with it, I found that the
> following code will fix the problem in a basic standalone app:
>
>     int _________mine;
>     void *__________p = NULL;
>     _________mine = Py_DebugFlag;
>     _________mine = Py_VerboseFlag;
>     _________mine = Py_InteractiveFlag;
>     _________mine = Py_OptimizeFlag;
>     _________mine = Py_NoSiteFlag;
>     _________mine = Py_UseClassExceptionsFlag;
>     _________mine = Py_FrozenFlag;
>     _________mine = Py_TabcheckFlag;
>     _________mine = Py_UnicodeFlag;
>     _________mine = Py_IgnoreEnvironmentFlag;
>     _________mine = Py_DivisionWarningFlag;
>     _________mine = _Py_QnewFlag;
>     __________p = (void *) _PyOS_ReadlineTState;
>     __________p = (void *) PyOS_ReadlineFunctionPointer;
>
>
> Woah, don't I feel like the lib is jerking me around a little? Anyway, this
> works if I put it in main() for a standalone target, in a semi-random class
> constructor for the AudioUnit target, and I still can't find the right place
> to put it for the RTAS (
> http://www.digidesign.com/index.cfm?query=developers%20plugin_info%20rtas.cfm&langid=1)
> target. It's a little weird that I'm getting this at runtime and not at
> link-time since I'm linking statically.
>
> This is the standalone main() that works, but fails if I remove the above
> code:
>
> #include <Python.h>
>
> int main(int, char **)
> {
>   int mine = -1;
>   void *p = NULL;
>
>   mine = Py_DebugFlag;
>   mine = Py_VerboseFlag;
>   mine = Py_InteractiveFlag;
>   mine = Py_OptimizeFlag;
>   mine = Py_NoSiteFlag;
>   mine = Py_UseClassExceptionsFlag;
>   mine = Py_FrozenFlag;
>   mine = Py_TabcheckFlag;
>   mine = Py_UnicodeFlag;
>   mine = Py_IgnoreEnvironmentFlag;
>   mine = Py_DivisionWarningFlag;
>   mine = _Py_QnewFlag;
>   p = (void *) _PyOS_ReadlineTState;
>   p = (void *) PyOS_ReadlineFunctionPointer;
>
>   Py_Initialize();
>
>   Py_Finalize();
> }
>
>
> It seems to me like this might have something to do with setting up a
> symbol lookup table correctly or something, I don't know. I'm not having any
> problems with debug builds. This is the relevant part of my config.status.
>
> ac_cs_version="\
>
> python config.status
> 2.5
>
> configured by ./configure, generated by GNU Autoconf
> 2.59,
>
>   with options \"'--enable-universalsdk' '--disable-shared'\"
>
>
> Help? *whimper*.. Cheers.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20080522/96c56cf3/attachment-0001.html>


More information about the Python-list mailing list