CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   compiling libraries - LIBBIN and USER_LIBBIN (

grjmell February 8, 2012 11:42

compiling libraries - LIBBIN and USER_LIBBIN
So, I'm compiling a modified version of the twoPhaseEulerFoam solver. I've copied my version to a folder and compile it to $FOAM_USER_APPBIN. No problem. Within the solver there are three libraries (containing submodels) that must be compiled separately if one wishes to make changes to those submodels. I compiled the libraries to $FOAM_USER_LIBBIN, and it all works ok. If i run my modified solver it uses the modified libraries.

Now, the problem is that the original version of twoPhaseEulerFoam is also using the changed version of the libraries. I don't understand why since the original libraries and code are unaltered (unless i have overlooked something but it does not appear so), but somehow it is using my modified libraries in $FOAM_USER_LIBBIN as opposed to the original libraries in $FOAM_LIBBIN. Does anyone know why and how I can stop that from happening? I want the original solver to use the original libraries and the modified solver to use the modified libraries in USER_LIBBIN.

ngj February 8, 2012 11:56

Hi Greg

I would suggest that you name those libraries in FOAM_USER_LIBBIN libmy<name>.so in stead of lib<name>.so and change the linked libraries in your modified solver accordingly.

The problem is most definitely that FOAM_USER_LIBBIN appears first in the search path for the linking, so the original solver finds your modified libraries first, because the are named the same.

Kind regards,


grjmell February 8, 2012 13:50

Thanks Niels,
I have renamed my modified libraries as suggested. When trying to link to those in the Make/options file of the actual solver, i get an error message that it can't find them. I think it's maybe a syntax thing that i've got wrong. to clarify, the original contents of my Make/options file of the solver are as below.
i compile for example a new library called libmyphaseModel (instead of the original libphaseModel). then i get in my USER_LIBBIN. good that works. now in my Make/options file of the solver (below), i tried changing -lphaseModel to -lmyphaseModel but I get an error message that it cannot be found. it doesnt seem to recognise the new name of the library. is my syntax wrong?


    -I$(FOAM_SOLVERS)/multiphase/bubbleFoam \
    -I$(LIB_SRC)/finiteVolume/lnInclude \
    -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
    -IturbulenceModel \
    -IkineticTheoryModels/lnInclude \
    -IinterfacialModels/lnInclude \
    -IphaseModel/lnInclude \

    -lEulerianInterfacialModels \
    -lfiniteVolume \
    -lmeshTools \
    -lincompressibleTransportModels \
    -lphaseModel \

ngj February 8, 2012 15:15

Hi Greg

Try to add the following line prior to your own libraries in Make/options:


This tells the compiler that it ought to look in the directory $FOAM_USER_LIBBIN. This is how it works for me.

Best regards,


All times are GMT -4. The time now is 10:32.