Problems linking against OSG on OS X Tiger (on a Power PC)
Ryan Schmidt
ryandesign at macports.org
Sun Dec 7 23:16:37 PST 2008
On Dec 7, 2008, at 15:39, Ryan Schmidt wrote:
> On Dec 7, 2008, at 09:57, Severin Kacianka wrote:
>
>> I hope I do not ask a too obvious question, but I am just trying
>> to get familiar with OSG and in the process want to be able to
>> compile it on Linux and OS X. On Linux I have no problems
>> compiling a sample program like this:
>> g++ -I /usr/local/include/osg/ -losg -losgViewer -o foo test.cpp
>>
>> On OS X I installed OS X via macports. First I tried to compile it
>> directly form the sources, but ran into the bug described here:
>> http://trac.macports.org/ticket/17294
>>
>> Compiling and installing via macports worked fine.
>> However if I try to compile a sample program I get the following
>> error:
>>
>> g++ -L/opt/local/lib/ -I/opt/local/include/ -losg -losgViewer -o
>> foo test.cpp
>> /usr/bin/ld: warning can't open dynamic library: libOpenThreads.
>> 11.dylib referenced from: /opt/local/lib//libosg.dylib (checking
>> for undefined symbols may be affected) (No such file or directory,
>> errno = 2)
>> /usr/bin/ld: warning can't open dynamic library: libosgGA.48.dylib
>> referenced from: /opt/local/lib//libosgViewer.dylib (checking for
>> undefined symbols may be affected) (No such file or directory,
>> errno = 2)
>> /usr/bin/ld: warning can't open dynamic library: libosgText.
>> 48.dylib referenced from: /opt/local/lib//libosgViewer.dylib
>> (checking for undefined symbols may be affected) (No such file or
>> directory, errno = 2)
>> /usr/bin/ld: warning can't open dynamic library: libosgDB.48.dylib
>> referenced from: /opt/local/lib//libosgViewer.dylib (checking for
>> undefined symbols may be affected) (No such file or directory,
>> errno = 2)
>> /usr/bin/ld: warning can't open dynamic library: libosgUtil.
>> 48.dylib referenced from: /opt/local/lib//libosgViewer.dylib
>> (checking for undefined symbols may be affected) (No such file or
>> directory, errno = 2)
>> /usr/bin/ld: Undefined symbols:
>> *snip long list of symbols*
>> collect2: ld returned 1 exit status
>>
>> So for some reason ld cannot find the references from the
>> libraries among each other. The directory looks like this:
>>
>> libOpenThreads.11.dylib -> libOpenThreads.2.3.0.dylib
>> libOpenThreads.2.3.0.dylib
>> libOpenThreads.dylib -> libOpenThreads.11.dylib
>>
>>
>> (other libs are linked in the same manner)
>>
>> So the libs are there, but somehow not referenced correctly. Does
>> anyone know what the problem may be, or any other way to use OSG
>> on OS X?
>
> I see that it's linked this way:
>
> $ otool -L /opt/local/lib/libosg.dylib
> /opt/local/lib/libosg.dylib:
> libosg.48.dylib (compatibility version 48.0.0, current
> version 2.6.1)
> libOpenThreads.11.dylib (compatibility version 11.0.0,
> current version 2.3.0)
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
> current version 88.3.10)
> /System/Library/Frameworks/AGL.framework/Versions/A/AGL
> (compatibility version 1.0.0, current version 1.0.0)
> /System/Library/Frameworks/OpenGL.framework/Versions/A/
> OpenGL (compatibility version 1.0.0, current version 1.0.0)
> /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0,
> current version 7.4.0)
> /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0,
> current version 1.0.0)
> $
>
> That looks wrong. It should look like this:
>
> $ otool -L /opt/local/lib/libosg.dylib
> /opt/local/lib/libosg.dylib:
> /opt/local/lib/libosg.48.dylib (compatibility version
> 48.0.0, current version 2.6.1)
> /opt/local/lib/libOpenThreads.11.dylib (compatibility
> version 11.0.0, current version 2.3.0)
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,
> current version 88.3.10)
> /System/Library/Frameworks/AGL.framework/Versions/A/AGL
> (compatibility version 1.0.0, current version 1.0.0)
> /System/Library/Frameworks/OpenGL.framework/Versions/A/
> OpenGL (compatibility version 1.0.0, current version 1.0.0)
> /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0,
> current version 7.4.0)
> /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0,
> current version 1.0.0)
> $
>
> This probably means they're not using the -install_name parameter.
I filed a ticket:
http://trac.macports.org/ticket/17577
More information about the macports-users
mailing list