octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MXE Octave: "... has no symbols" warning under Mac OS X


From: Ben Abbott
Subject: Re: MXE Octave: "... has no symbols" warning under Mac OS X
Date: Tue, 03 Sep 2013 14:48:38 -0400

On Sep 3, 2013, at 1:40 PM, Anirudha Bose wrote:

> On Tue, Sep 3, 2013 at 9:56 PM, Benjamin Abbott <address@hidden> wrote:
> 
>> On Sep 3, 2013, at 11:57 AM, Anirudha Bose <address@hidden> wrote:
>> 
>>> On Tue, Sep 3, 2013 at 6:18 PM, Ben Abbott <address@hidden> wrote:
>>> On Sep 3, 2013, at 4:11 AM, Anirudha Bose wrote:
>>> 
>>> >
>>> > On Tue, Aug 27, 2013 at 7:58 PM, Alexander Hansen <address@hidden> wrote:
>>> >> On 8/27/13 4:58 AM, Ben Abbott wrote:
>>> >>> On Aug 27, 2013, at 4:26 AM, Anirudha Bose wrote:
>>> >>>
>>> >>>> I have been working on reusing mxe-octave [1] to natively build Octave 
>>> >>>> for Mac OS X. I have been able to complete the build process for the 
>>> >>>> target i686-apple-darwin11, but the executable usr/bin/octave doesn't 
>>> >>>> launch Octave. Here is the error I see.
>>> >>>>
>>> >>>> dyld: Library not loaded: libcholmod.so
>>> >>>>    Referenced from: /Users/mac6-user1/./mxe-octave/usr/bin/octave
>>> >>>>    Reason: image not found
>>> >>>> Trace/BPT trap: 5
>>> >>>>
>>> >>>> I tried to trace back the error and saw that the library libcholmod.so 
>>> >>>> belongs to the package suitesparse. The following is a part of the log 
>>> >>>> of suitesparse,  which I think is responsible for the above error.
>>> >>>>
>>> >>>> ar rv  libcholmod.a cholmod_aat.o cholmod_add.o cholmod_band.o 
>>> >>>> cholmod_change_factor.o cholmod_common.o cholmod_complex.o 
>>> >>>> cholmod_copy.o cholmod_dens$
>>> >>>> ar: creating archive libcholmod.a
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_ccolamd.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_csymamd.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_metis.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_nesdis.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_camd.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_l_ccolamd.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_l_csymamd.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_l_metis.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_l_nesdis.o) has no 
>>> >>>> symbols
>>> >>>> /opt/local/bin/ranlib: file: libcholmod.a(cholmod_l_camd.o) has no 
>>> >>>> symbols
>>> >>>>
>>> >>>> I suppose the problem is because Mac OS "ar" is not standard. I have 
>>> >>>> also noticed these warnings with other packages too. Can anyone tell 
>>> >>>> me how to get a proper build under Mac OS X?
>>> >>>>
>>> >>>> [1] http://hg.octave.org/mxe-octave
>>> >>>>
>>> >>>> - Anirudha
>>> >>>
>>> >>> MacOSX's toolchain avoids the use of static libraries (I assume to 
>>> >>> avoid violating GNU licenses).  That is likely at the root of the 
>>> >>> problem.
>>> >>>
>>> >>> In any event, I expect that both Fink and Macports include an "ar" with 
>>> >>> their basic installation.
>>> >>>
>>> >>> Ben
>>> >>
>>> >> You assume incorrectly in the case of Fink. :-)  We use the system's 
>>> >> "ar".
>>> >>
>>> >> It looks to me like the problem could be that 
>>> >> /Users/mac6-user1/./mxe-octave/usr/bin/octave wants to link 
>>> >> "libcholmod.so", which would be 
>>> >> /Users/mac6-user1/./mxe-octave/usr/bin/libcholmod.so .  You can check 
>>> >> this scenario using "otool -L 
>>> >> /Users/mac6-user1/./mxe-octave/usr/bin/octave" .
>>> >
>>> > This is exactly the reason why I am seeing the above errors. I am using 
>>> > install_name_tool for changing the paths, but is there any way to 
>>> > automate this job? The errors exist in too many executables and shared 
>>> > libraries to be done manually one by one. I also recompiled Octave with a 
>>> > new LDFLAG -headerpad_max_install_names to reserve enough space for 
>>> > changing all dynamic shared library paths.
>>> 
>>> Maybe there is a better way ... but I wrote scripts to handle this task
>>> 
>>>         
>>> http://wiki.octave.org/Create_a_MacOS_X_App_Bundle_Using_MacPorts#Fixing_.22dyld:_Library_not_loaded.22_Errors
>>> 
>>> I got the following error when I executed your scripts.
>>> 
>>> octave:1> dylibs_fix ("bin/octave", "lib", false)
>>> Working in directory -> "lib" ...error: 'dylibs_isdylib' undefined near 
>>> line 74 column 21
>>> error: evaluating argument list element number 1
>>> error: called from:
>>> error:   
>>> /Users/mac6-user1/mxe/mxe-octave-anirudha/usr/x86_64-apple-darwin12.2.1/dylibs_find.m
>>>  at line 74, column 13
>>> error:   
>>> /Users/mac6-user1/mxe/mxe-octave-anirudha/usr/x86_64-apple-darwin12.2.1/dylibs_fix.m
>>>  at line 160, column 12
>>> 
>>> I have saved all the m-scripts at one place, and my working directory 
>>> contained the bin and lib folders. Am I doing something wrong?
>>> 
>>> - Anirudha
>> 
>> Please add the directory containing the scripts to your path.
> 
> This doesn't seem to solve my problem. After adding the directory to my path, 
> this is what "echo $PATH" returns --
> 
> /opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/upgraded/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/mac6-user1/mxe/mxe-octave-anirudha/usr/x86_64-apple-darwin12.2.1/
> 
> The last path contains all the 4 scripts. I opened Octave and executed 
> dylibs_fix ("bin/octave", "lib", false), but got the same errors.

The directory to the scripts needs to be added to Octave's path (not your 
shell's path).

Ben



reply via email to

[Prev in Thread] Current Thread [Next in Thread]