在linux中使用共享库执行二进制文件

时间:2014-03-19 16:14:29

标签: c++ linux gcc g++ shared-libraries

我正在制作一个简单的hello world程序来学习如何在linux中链接共享库。我已经设法使用以下内容将主程序编译成具有共享库的可执行文件:

g++ -fPIC -c lab2_hello_main.cpp    <--create position independent objects

g++ -fPIC -c lab2_hello_sub.cpp

g++ -fPIC -shared -Wl,-soname=libfuncs.so.1.0 *.o -o libfuncs.so.1.0 -lc <--make the shared library

ln -s libfuncs.so.1.0 libfuncs.so <-- soft links for compiling and running

ln -s libfuncs.so.1.0 libfuncs.so.1

g++ -o hello_dyn lab2_hello_main.cpp -L/mypath -lfuncs <-- Linking the library to main

当我在hello_dyn上执行ldd时,我得到一个输出,指出找不到该库:

"libfuncs.so.1.0 => not found" 它自动查找的其他库很好。

任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

您的共享库的位置不在链接器的搜索路径中。您可以通过将库所在的目录添加到LD_LIBRARY_PATH环境变量来确认,然后再次运行ldd。有关详细信息,请参阅ld.so(8)手册页。