【发布时间】:2010-12-01 14:05:42
【问题描述】:
我正在学习 POCO 项目网站上的 First Steps 教程,并且我已经在我的主目录下成功构建了库(Debian Linux,2.6.26,gcc 4.3.2)
~/开发/POCO
与位于
中的共享库~/Development/POCO/lib/Linux/x86_64/lib
我的问题是我构建的任何依赖这些库的应用程序只能从共享库目录运行。
~/Development/POCO/lib/Linux/x86_64$ ldd ~/Development/Cloud/DateTimeSample/bin/Linux/x86_64/DateTime linux-vdso.so.1 => (0x00007fffe69fe000) libPocoFoundation.so.6 (0x00007fa8de44f000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007fa8de233000) libdl.so.2 => /lib/libdl.so.2 (0x00007fa8de02f000) librt.so.1 => /lib/librt.so.1 (0x00007fa8dde26000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fa8ddb1a000) libm.so.6 => /lib/libm.so.6 (0x00007fa8dd897000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fa8dd680000) libc.so.6 => /lib/libc.so.6 (0x00007fa8dd32d000) /lib64/ld-linux-x86-64.so.2 (0x00007fa8de7e0000)从这个目录运行 DateTime 会像你期望的那样工作。不过
~/Development/Cloud/DateTimeSample/bin/Linux/x86_64$ ldd DateTime linux-vdso.so.1 => (0x00007fff24dfe000) libPocoFoundation.so.6 => 未找到 libpthread.so.0 => /lib/libpthread.so.0 (0x00007ffc1c7dd000) libdl.so.2 => /lib/libdl.so.2 (0x00007ffc1c5d9000) librt.so.1 => /lib/librt.so.1 (0x00007ffc1c3d0000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007ffc1c0c4000) libm.so.6 => /lib/libm.so.6 (0x00007ffc1be41000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007ffc1bc2a000) libc.so.6 => /lib/libc.so.6 (0x00007ffc1b8d7000) /lib64/ld-linux-x86-64.so.2 (0x00007ffc1c9f9000)所以从任何其他目录运行可执行文件会导致
加载共享库时出错:libPocoFoundation.so.6:无法打开共享对象文件:没有这样的文件或目录查看make过程的输出,正确指定了目录
g++ [废话] -L/home/npalko/Development/POCO/lib/Linux/x86_64 -lPoco基金会我试过设置
LD_LIBRARY_PATH 到 /home/npalko/Development/POCO/lib/Linux/x86_64,但它没有改变任何东西。任何帮助将不胜感激!
【问题讨论】:
-
啊,我的问题是我错误地设置了 LD_LIBRARY_PATH。更多的是对 Bash 的误解。非常感谢您的帮助!