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 <[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) >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>> >>
