I have an open issue assigned to me to go implement Sys.dllist() for
windows :/

but nm /usr/local/lib/libsundials_cvode.so is listing all of the functions
you call call, so youc can just look to see see if CVodeCreate is in the
list. It also indicates the visibility of that function -- to be called
from external code, it must have a capital T.


On Wed, Mar 12, 2014 at 1:05 AM, Thomas Moore <[email protected]> wrote:

> I fear print(Sys.dlliist()) is not an option in julia. There's lots of
> other options (Sys,MACHINE, Sys.init, etc) but no Sys.dllist().
>
> My Julia install is Version 0.3.0-prerelease+308 if that is relevant :)
>
> Also, nm /usr/local/lib/libsundials_cvode.so just gives me a long list
> like this:
>
> 0000000000200e40 a _DYNAMIC
> 0000000000200fe8 a _GLOBAL_OFFSET_TABLE_
>                  w _Jv_RegisterClasses
> 0000000000200e20 d __CTOR_END__
> 0000000000200e18 d __CTOR_LIST__
> 0000000000200e30 d __DTOR_END__
> 0000000000200e28 d __DTOR_LIST__
> 00000000000005f0 r __FRAME_END__
> 0000000000200e38 d __JCR_END__
> 0000000000200e38 d __JCR_LIST__
> 0000000000201010 A __bss_start
>                  w __cxa_finalize@@GLIBC_2.2.5
> 0000000000000550 t __do_global_ctors_aux
> 00000000000004a0 t __do_global_dtors_aux
> 0000000000201008 d __dso_handle
>                  w __gmon_start__
> 0000000000201010 A _edata
> 0000000000201020 A _end
> 0000000000000588 T _fini
> 0000000000000448 T _init
> 0000000000000480 t call_gmon_start
> 0000000000201010 b completed.6531
> 0000000000201018 b dtor_idx.6533
> 0000000000000520 t frame_dummy
>
> Thanks again
>
> Tom
>
>
> On Tuesday, 11 March 2014 22:57:57 UTC+10, Ivar Nesje wrote:
>>
>> Your code works for me, so I think there is still a problem on your
>> system configuration.
>>
>> The error is about the C function `CVodeCreate`, not the Julia function
>> with the same name, and apparently Julia finds the sundials library, but it
>> does not contain the function.
>>
>> Try to run `print(Sys.dllist())` after running your test code to see what
>> libraries are actually loaded. When you know what library gets loaded, you
>> can inspect the library with eg. `nm /usr/local/lib/
>> libsundials_cvode.dylib`, and see if you can find the `CVodeCreate`
>> function.
>>
>> Ivar
>>
>>
>> kl. 11:35:46 UTC+1 tirsdag 11. mars 2014 skrev Thomas Moore følgende:
>>>
>>> OK, running
>>>
>>> push!(DL_LOAD_PATH, "/usr/local/lib/")
>>>
>>> has improved the situation a little: now we get this error:
>>>
>>> ERROR: ccall: could not find function CVodeCreate in library
>>> libsundials_cvode
>>>  in ode at /home/thomas/.julia/Sundials/src/Sundials.jl:250
>>>
>>> At least the shared library is recognised :)
>>>
>>> Sundials.CVodeCreate seems to be a generic function, but in Sundials.jl
>>> at line 250 the call to it doesn't seem to be recognised - the error is
>>> driven by this call to it:
>>>
>>>  mem = CVodeCreate(CV_BDF, CV_NEWTON)
>>>
>>> Any more ideas? :D
>>>
>>> Again, a massive thanks! I'm sure this will be useful to others looking
>>> for a nice DAE solver in Julia in the near future :)
>>>
>>> Tom
>>>
>>> On Monday, 10 March 2014 23:25:25 UTC+10, Isaiah wrote:
>>>>
>>>> try:
>>>>
>>>> julia> push!(DL_LOAD_PATH, "/usr/local/lib/")
>>>>
>>>> you can also double-check whether it is loadable:
>>>>
>>>> julia> dlopen("/usr/local/lib/libsundials_cvode.so")
>>>>
>>>> clang.jl is only a dependency for generating the bindings, not at
>>>> runtime.
>>>>
>>>>
>>>> On Mon, Mar 10, 2014 at 8:42 AM, Thomas Moore <[email protected]>wrote:
>>>>
>>>>> Thanks for your help everyone! I couldn't find the .so file
>>>>> originally, but after building it again with ./configure --enable-shared
>>>>> there was a libsundials_cvode.so in my /usr/local/lib. However I still 
>>>>> have
>>>>> the same problem. So far I have:
>>>>>
>>>>> removed sundials with Pkg.rm("Sundials")
>>>>> reinstalled it with Pkg.add("Sundials")
>>>>>
>>>>> And then run:
>>>>>
>>>>> push!(DL_LOAD_PATH, "/usr/local/lib/libsundials_cvode.so")
>>>>>
>>>>> And then run the function I copied above. I fear I'm still getting the
>>>>> exact same error though. It seems it's not recognising the existence of 
>>>>> the
>>>>> .so file :(
>>>>>
>>>>> Any recommendations? My (novice) thoughts are: possibly julia doesn't
>>>>> have permission to access libsundials_cvode.so, I don't know why not
>>>>> though. Also maybe I need some other package installed: for instance, is
>>>>> Clang.jl a dependency - it isn't listed as such?
>>>>>
>>>>> Thanks!
>>>>>
>>>>>
>>>>>
>>>>> On Monday, 10 March 2014 21:53:54 UTC+10, Isaiah wrote:
>>>>>
>>>>>> Ah, good call. Use `./configure --enable-shared` for the Makefile
>>>>>> build.
>>>>>>
>>>>>>
>>>>>> On Mon, Mar 10, 2014 at 3:34 AM, Ivar Nesje <[email protected]> wrote:
>>>>>>
>>>>>>> I do not know CMake, but now that I have a computer I found out that
>>>>>>> I probably used
>>>>>>>
>>>>>>> BUILD_SHARED_LIBS:BOOL=on
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> kl. 07:43:38 UTC+1 mandag 10. mars 2014 skrev Ivar Nesje følgende:
>>>>>>>
>>>>>>>> Sundials does not compile a shared library by default. You must
>>>>>>>> look in the PDF manual to find the right option to send to make or
>>>>>>>> configure. (Large pdf is hard to read on phone)
>>>>>>>
>>>>>>>
>>>>>>
>>>>

Reply via email to