[Qgis-user] Mac OS X: QGIS 1.0 Preview 2 Crashes

William Kyngesburye woklist at kyngchaos.com
Fri Nov 14 17:04:46 PST 2008


On Nov 14, 2008, at 6:30 PM, Martin Dobias wrote:

> libqgispython expects that dynamic linker loads the python library.
> But I don't understand why we need to avoid it. Are python
> implementations on OS X incompatible so that dynamic linker can't
> choose any implementation?
>
There's dynamic linking and static linking for shared libraries.   
Generally, OSX expects static linking for libraries, and dynamic  
linking for plugins/modules.

Whenever you link with the compiler with -lfoo or -framework foo, it  
will be statically linked with a specific path (unlike Linux where I  
believe just the library name is stored in the binary and  
LD_LIBRARY_PATH and ld.conf set a search path).

> Do you think that this will work? Let QGIS dynamically load python
> library, and if loaded successfully, load also libqgispython? It makes
> some sense to me but isn't this something that dynamic linker is
> better suited to do?
>
So, yes, I'm suggesting dynamically linking Python instead of the  
normal static linking.  OSX does have a DYLD_LIBRARY_PATH, but I'm not  
sure how that applies to frameworks, and it's not easily configured by  
the user for applications.  Oh, I see DYLD_FRAMEWORK_PATH also (from  
dyld), but it doesn't appear that dlopen uses that.

You could try the known paths for the Python framework, and also make  
it configurable by the user as a Qgis preference.  Then dlopen() that.


Hmmm...  A possibility: compile and link statically as Qgis does now,  
use install_name_tool to change the python link to drop the path (this  
is how the Qt frameworks are initially).  The linker at runtime then  
will use DYLD_FRAMEWORK_PATH and its internal default path to search  
for the python binary.  A pseudo-dynamic linking, no need to fuss with  
dlopen() and searching for python or a preference.  A user-installed  
python framework will override the system python, as expected.

>
>> Otherwise, whatever is done to make all the PyQt and Qgis python  
>> extensions
>> "proper" won't matter, since libqgispython will be stuck with  
>> whichever
>> python it was compiled with.
>
> So does this mean that both libqgispython and sip/pyqt/pyqgis share
> the same problem that they link to a specific python?
>
Yes.

> Btw. is there any good reading on web about these OSX-specific linking
> issues in general to get a bigger image?


Xcode documentation (it's all online at Apple).  GCC/LD man pages on  
an OSX Mac with Xcode have OSX-specific info also (they might also be  
on other systems).

A lot of the finer details is just my accumulation over the years ;)

-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/

"Time is an illusion - lunchtime doubly so."

- Ford Prefect





More information about the Qgis-user mailing list