Hi all, I decided to try re-installing Sundials-2.5.0 and, lo and behold, after deleting the installed sundials-2.5.0 directory and reinstalling with ./configure --enable-shared (as I tried before), this time it worked! Running:
nm /usr/local/lib/libsundials_cvode.so | grep CVodeCreate returned: 000000000000a440 T CVodeCreate so there is something there now, and the example code worked too! Thanks for all your help! I can now continue a little project I wanted to try out in Julia :) Tom On Sunday, 16 March 2014 23:08:52 UTC+10, Thomas Moore wrote: > > Hi guys, so I finally got around to updating my julia distribution. I > checked print(Sys.dllist()) and it is true that the library > /usr/local/lib/libsundials_cvode.so was loaded. However, running > > nm /usr/local/lib/libsundials_cvode.so | grep CVodeCreate > > in a terminal gave no result - it appears there's no CVodeCreate function > in this shared library :( > > Either one has to make a shared library using a different method than > ./configure --enable-shared (perhaps needing to specify what is shared), or > else the installation sundials-2.5.0.tar.gz from the Sundials > website<http://computation.llnl.gov/casc/sundials/download/download.html> is > not valid for some reason. > > Thanks > > Tom > > > On Wednesday, 12 March 2014 18:30:50 UTC+10, Ivar Nesje wrote: >> >> @jameson He says he is using Ubuntu 12.04, but his Julia version is too >> old for dllist(). >> >> Updating to the latest version would be advisable, because that is what >> everybody who is likely to help you on this list compile the latest master >> from source at least weekly. I do not know the Ubuntu release schedule and >> "end of life" dates, but I think I have heard something about trouble >> providing updates in `apt-get` to old versions of Ubuntu. >> >> @thomas The output is as expected, but I wanted to see if "CVodeCreate" >> was in there. Give the output of >> >> nm /usr/local/lib/libsundials_cvode.so | grep CVodeCreate >> >> Ivar >> >> kl. 05:41:26 UTC+1 onsdag 12. mars 2014 skrev Jameson følgende: >>> >>> 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 <tomm...@live.com.au>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 >>>>>>> <tomm...@live.com.au>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 <iva...@gmail.com>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) >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>