Hi I got a very tricky problem when I tried to compile a C++ program which links to libRmath.so. The program itself had no problem, I can compile and run in my own linux machine where I compiled libRmath.so file and copied it to system directory (/usr/local/lib). Now I want to compile my program at another linux box where I don't have root privilege. That machine only has binary version of R, so I built R from source in my own directory: /Users/tib/R And I also compiled libRmath.so, copied it to /Users/tib/R/bin/ Now I use this to compile my program g++ engine.cpp -o engine -lm -lRmath -I/Users/tib/R/lib/R/include/ -L/Users/tib/R/bin/ it did not report any error, however as I executed the program ./engine it reported: ./engine: error while loading shared libraries: libRmath.so: cannot open shared object file: No such file or directory Why did it report this error but compile through? Is this because the binary R installed system wide affected the compilation? Or did I miss anything? Thanks, tib -- I am Tib, not Rob.
On Jun 2, 2005, at 5:52 PM, Tib wrote:> Now I use this to compile my program > g++ engine.cpp -o engine -lm -lRmath -I/Users/tib/R/lib/R/include/ > -L/Users/tib/R/bin/ > it did not report any error, however as I executed the program > ./engine > it reported: > ./engine: error while loading shared libraries: libRmath.so: cannot > open shared object file: No such file or directory > > Why did it report this error but compile through?Because you specified the path to the library for the compiler (-L/ Users/tib/R/bin/), but failed to do so at runtime. Something like export LD_LIBRARY_PATH=/Users/tib/R/bin/ should do the trick, usually [I'm assuming you have libRmath.so in / Users/tib/R/bin]. Cheers, Simon