X
PrevPrev Go to previous topic
NextNext Go to next topic
Last Post 12 Aug 2015 10:50 AM by  Zachary Norman
libidl SONAME issue
 2 Replies
Sort:
You are not authorized to post a reply.
Author Messages

Zachary Norman



Basic Member


Posts:173
Basic Member


--
12 Aug 2015 10:50 AM
    I'm having an issue with libidl in that its SONAME refers to specific minor versions (i.e. 8.3, 8.4, etc). This means that my software will not load correctly at run-time if the target user does not use the same version (major AND minor) of IDL that I used to link the application. It also means that even if the user has the correct version initially, any upgrades of IDL on the user's end will cause my software to no longer load properly at run-time. What is the recommended solution for this? We can assume that my target users will have a licensed version of IDL installed. Ideally, a solution would work across operating systems as we will support Red Hat Linux, Windows, and OSX.

    Zachary Norman



    Basic Member


    Posts:173
    Basic Member


    --
    12 Aug 2015 11:00 AM
    Hi, I have a few questions to better understand your problem and what you are trying to do in IDL. 1) Are you using make_dll to create your DLL's and DLM's? If not, what method are you using? 2) What compiler are you using for your DLLs? 3) What is it that you want to use the DLL and DLM for? Are you using this for a VM distribution or would you have users manually install the DLM and DLL on their machines? Generally speaking it is not too surprising that you are having issues with using DLLs and DLMs for multiple versions of IDL. This is because the libidl.so file could potentially have some changes made which are version specific (specifically entry points into libidl.so) and they require that version of libidl.so to run properly.

    Deleted User



    New Member


    Posts:
    New Member


    --
    17 Sep 2015 08:09 AM
    "Are you using make_dll to create your DLL's and DLM's? If not, what method are you using?" I am on a Linux system so I am not making DLLs, but .'so' shared libraries. I'm writing DLM shared lib code in C++ and simply exporting the 'IDL_Load' function using C linkage rules (by wrapping it in an extern "C" block). I can then link this lib against libidl.so, write the '.dlm' text file, add my DLM directory to the IDL_DLM_PATH environment variable, and voila, it works perfectly. "What compiler are you using for your DLLs?" GCC (g++). "What is it that you want to use the DLL and DLM for? Are you using this for a VM distribution or would you have users manually install the DLM and DLL on their machines?" So I'm deploying my software as a binary package. I guess that means users will install it on their machines, but I'm using RPM, so I wouldn't call that 'manual'. But, yes users will have to invoke the package management system (YUM) to install my software. The DLMs are a part of my software interfaces, they allow users to supplement IDL analysis tasks with my custom C++ functionality. The user is expected to have some version of IDL already installed on their box "Generally speaking it is not too surprising that you are having issues with using DLLs and DLMs for multiple versions of IDL. This is because the libidl.so file could potentially have some changes made which are version specific (specifically entry points into libidl.so) and they require that version of libidl.so to run properly." Well, I might expect this for changes in major version, say IDL 7 vs. IDL 8. But, honestly, to have this restriction on the minor versions as well (8.3 vs, 8.4, for example) is rather prohibiting and forces me to question the fitness of IDL as a data analysis solution for our projects. EDIT: I should add that I am *currently* targeting Linux systems, but the plan is to eventually support Windows and OSX as well.
    You are not authorized to post a reply.