Singular https://www.singular.uni-kl.de/forum/ |
|
Could not find dynamic library: p_Procs_FieldIndep.so (path) https://www.singular.uni-kl.de/forum/viewtopic.php?f=10&t=2591 |
Page 1 of 1 |
Author: | machielk [ Tue Mar 21, 2017 6:58 pm ] |
Post subject: | Could not find dynamic library: p_Procs_FieldIndep.so (path) |
I downloaded the source code for Singular from https://github.com/Singular/Sources and compiled it succesfully. Now I want to create my own code and link it to the Singular libs. My (very simple) code is: Code: #include <libsingular.h> int main() { char** n = (char**) omalloc( 3*sizeof(char*) ); n[0]=omStrDup("x"); n[1]=omStrDup("y"); n[2]=omStrDup("z"); ring R = rDefault(0, 3, n); } I compile this with: Quote: SINGULAR_BASE=/home/mkolstein/Singular/Sources-spielwiese/ FOO=$SINGULAR_BASE/libpolys/polys/.libs/p_Procs_FieldIndep.so g++ -I$SINGULAR_BASE/Singular/ -I$SINGULAR_BASE/ -I$SINGULAR_BASE/libpolys/ -I$SINGULAR_BASE/factory/include/ -I$SINGULAR_BASE/libpolys/polys/.libs/ -o mysingular mySingular.cxx -L$SINGULAR_BASE/Singular/.libs/ -lSingular -L$SINGULAR_BASE/libpolys/polys/.libs/ -lpolys $FOO -L$SINGULAR_BASE/resources/.libs/ -lsingular_resources -L$SINGULAR_BASE/omalloc/.libs/ -lomalloc and before running my executable, also make sure LD_LIBRARY_PATH can find all ".so" files: Quote: export SINGULAR_BASE=/home/mkolstein/Singular/Sources-spielwiese/ export SINGULAR_LIB_DIR=$SINGULAR_BASE/Singular/.libs/ export SINGULAR_LIB_2=$SINGULAR_BASE/libpolys/polys/.libs/ export SINGULAR_LIB_3=$SINGULAR_BASE/resources/.libs/ export SINGULAR_LIB_4=$SINGULAR_BASE/omalloc/.libs/ export SINGULAR_LIB_5=$SINGULAR_BASE/libpolys/polys/.libs/p_Procs_FieldIndep.so export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SINGULAR_LIB_DIR:$SINGULAR_LIB_2:$SINGULAR_LIB_3:$SINGULAR_LIB_4:$SINGULAR_LIB_5 However, when I run my executable "mysingular", I get the following warning: Quote: Bug >>feArgv0 == NULL<< at feResource.cc:403 // ** Could not find dynamic library: p_Procs_FieldIndep.so (path ) // ** Singular will work properly, but much slower. // ** See the INSTALL section in the Singular manual for details. How can I avoid this? |
Author: | hannes [ Wed Mar 22, 2017 11:05 am ] |
Post subject: | Re: Could not find dynamic library: p_Procs_FieldIndep.so (path) |
You are missing the initialization: Code: void main()
{ // init path names etc.: the string should point to an existing // executable in a directory $B // LIBs are searched in $B/LIB, $B/../LIB, // see kernel/feRessource.cc // also needed to find its dynamic modules in $B/MOD, $B/../lib/singular/MOD, $B/../libexec/singular/MOD,... siInit((char *)"./Singular/libsingular.so"); .... |
Author: | machielk [ Wed Mar 22, 2017 1:04 pm ] |
Post subject: | Re: Could not find dynamic library: p_Procs_FieldIndep.so (path) |
Adding Quote: siInit((char *)"./Singular/libsingular.so"); still gives me: Quote: ? cannot open `standard.lib` // ** Could not find dynamic library: p_Procs_FieldIndep.so (path ) // ** Singular will work properly, but much slower. // ** See the INSTALL section in the Singular manual for details. Adding both lines like: Quote: siInit((char *)"../../Singular/.libs/libSingular.so"); siInit((char *)"../../libpolys/polys/.libs/p_Procs_FieldIndep.so"); gives me: Quote: ? cannot open `standard.lib`
coeff 7 already initialized coeff 8 already initialized ? cannot open `standard.lib` // ** Could not find dynamic library: p_Procs_FieldIndep.so (path ) // ** Singular will work properly, but much slower. |
Author: | hannes [ Thu Mar 23, 2017 12:27 pm ] |
Post subject: | Re: Could not find dynamic library: p_Procs_FieldIndep.so (path) |
First of all: siInit must only be called once. Its arguments should be a readable file (usually it is the main binary Singular, derived from argv[0]). If the directory this file is in is %b, and %r is the prefix given in the configuration (or /usr/local if nothing was given) then Singulars *.lib files are searched in %b/../share/singular/LIB, and %b/LIB, dynamic modules are searched in "%b/MOD;" "%r/lib/singular/MOD;" "%r/libexec/singular/MOD;". (see ressources/feRessources.cc). Otherwise, one may set the environment variables SINGULAR_PROCS_DIR for the dynamic modules, SINGULARPATH for *.lib files, |
Author: | machielk [ Fri Mar 24, 2017 5:43 pm ] |
Post subject: | Re: Could not find dynamic library: p_Procs_FieldIndep.so (path) |
From where my own code is located, the Singular directory is 2 directories up. So I make this call in my code: Quote: siInit((char *)"../../Singular/.libs/libSingular.so"); Next, I do an export, as you suggested, for the following directories: Quote: export SINGULAR_PROCS_DIR=../../Singular/MOD/ export SINGULARPATH=../../Singular/LIB/ Now, when running my code it complains: Quote: ./mysingular: error while loading shared libraries: libSingular-4.1.0.so: cannot open shared object file: No such file or directory The only "libSingular-4.1.0.so" I can find is this one: Quote: ../../Singular/.libs/libSingular-4.1.0.so Do I have to link this to the "MOD" directory? |
Author: | hannes [ Tue Mar 28, 2017 11:03 am ] |
Post subject: | Re: Could not find dynamic library: p_Procs_FieldIndep.so (path) |
These are 2 different things: A) shared libraries: the rules for your OS apply: i.e. set LD_LIBRARY_PATH for the dynamic linker to find then (see "man ld", "man ldconfig", "info gcc"). They are called lib*.so and can be found (on Linux) by "ldd libSingular.so" B) dynamic modules for Singular: their name does not start with lib, and they are searched in the places given by SINGULAR_PROCS_DIR (and ...., see my previous post) |
Author: | machielk [ Fri Mar 31, 2017 3:17 pm ] |
Post subject: | Re: Could not find dynamic library: p_Procs_FieldIndep.so (path) |
Thanks for your help. Indeed, doing this did the trick: Code: export SINGULAR_BASE=/home/mydir/Sources-spielwiese/
export SINGULAR_LIB_DIR=$SINGULAR_BASE/Singular/.libs/ export SINGULAR_LIB_2=$SINGULAR_BASE/libpolys/polys/.libs/ export SINGULAR_LIB_3=$SINGULAR_BASE/resources/.libs/ export SINGULAR_LIB_4=$SINGULAR_BASE/omalloc/.libs/ export SINGULAR_LIB_5=$SINGULAR_BASE/libpolys/polys/.libs/p_Procs_FieldIndep.so export SINGULAR_PROCS_DIR=$SINGULAR_BASE/Singular/MOD/ export SINGULARPATH=$SINGULAR_BASE/Singular/LIB/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SINGULAR_LIB_DIR:$SINGULAR_LIB_2:$SINGULAR_LIB_3:$SINGULAR_LIB_4:$SINGULAR_LIB_5:$SINGULARPATH:$SINGULAR_PROCS_DIR |
Page 1 of 1 | All times are UTC + 1 hour [ DST ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |