开发者

Getting 'error while loading shared libraries' when using -L to specifically find the library

I've been trying to solve this for a few hours now. I am compiling some c files using gcc. The files require libpbc, so I am using the -L flag to point gcc at the directory which contains libpbc.so.1. The code compiles without error yet when I attempt to run it I get the following error message:

./example.out: error while loading shared libraries: libpbc.so.1: cannot open shared object file: No such file or directory

Looking at similar questions this error message seems to indicate that gcc can't find libpbc.so.1. I know gcc sees libpbc.so.1 because when I rename libpbc.so.1 to something else it fails to compile.

I am using -L to point to the directory which contains libpbc.so.1.

Not sure what next steps I can take to figure this out. Would appreciate any ideas. What开发者_StackOverflow社区 does this error message mean exactly?

EDIT

Running ldd example.out results in:

linux-gate.so.1 =>  (0xb7fe3000)
libpbc.so.1 => not found
libgmp.so.3 => /usr/lib/libgmp.so.3 (0xb7f87000)


ldd example.out

That will give a lot of useful information about dynamic linking. More specifically though, your problem most likely lies with the path of the library not being in.

/etc/ld.so.conf

Note, that if you update that file, you must then run

ldconfig -v


Provide rpath flag while compiling.

g++ -Wall -o example.out -I ./include/ -L ./examplelibPath -Wl,-rpath ./libPath -l examplelibrary example.cpp
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜