|
[Sponsors] |
February 8, 2012, 11:42 |
compiling libraries - LIBBIN and USER_LIBBIN
|
#1 |
Member
Join Date: Nov 2010
Posts: 41
Rep Power: 16 |
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. |
|
February 8, 2012, 11:56 |
|
#2 |
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,903
Rep Power: 37 |
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, Niels |
|
February 8, 2012, 13:50 |
|
#3 |
Member
Join Date: Nov 2010
Posts: 41
Rep Power: 16 |
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 libmyphaseModel.so 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? Code:
EXE_INC = \ -I$(FOAM_SOLVERS)/multiphase/bubbleFoam \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -IturbulenceModel \ -IkineticTheoryModels/lnInclude \ -IinterfacialModels/lnInclude \ -IphaseModel/lnInclude \ -Iaveraging EXE_LIBS = \ -lEulerianInterfacialModels \ -lfiniteVolume \ -lmeshTools \ -lincompressibleTransportModels \ -lphaseModel \ -lkineticTheoryModel |
|
February 8, 2012, 15:15 |
|
#4 |
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,903
Rep Power: 37 |
Hi Greg
Try to add the following line prior to your own libraries in Make/options: Code:
-L$(FOAM_USER_LIBBIN) \ Best regards, Niels |
|
June 17, 2022, 23:06 |
|
#5 |
Senior Member
TWB
Join Date: Mar 2009
Posts: 414
Rep Power: 19 |
To make it clearer, it's like:
Code:
LIB_LIBS = \ -lfiniteVolume \ -lfvOptions \ -lmeshTools \ -ldynamicMesh \ -loverset \ -lfvMotionSolvers \ -L$(FOAM_USER_LIBBIN)/mylib |
|
|
|