g++ ld 共享库错误 code::blocks
g++ ld shared library error with code::blocks
有类似的话题,但我还没找到答案。
我正在使用 code::blocks IDE 构建测试控制台应用程序。它需要为 HD Home运行 DVB 调谐器加载名为 libhdhomerun.so(来自 Silicon Dust)的 DVB 共享库。 HDHR 调谐器库已使用 ./configure、...、sudo make install、ldconfig 等进行安装,并且它们都与它们的实用程序一起工作(同时构建)。所以 - 图书馆就在那里,没问题。
库将自身安装到 /usr/local/lib。实际上没有像其他共享库那样的 symlink,但是它最后也没有任何版本信息。
当我构建代码时(已明确包含 /usr/local/lib/libhdhomerun.so),ld 阶段失败并显示
"cannot find -lhdhomerun.so"
我已经尝试了包括 (/usr/local/lib/) libhdhomerun.so、hdhomerun.so、libhdhome运行、hdhome运行、创建 symlink 等等。没有任何区别。
奇怪的是,我以完全相同的方式包含了 udev、mysql 和 libdvbv5 共享库,它们都很好。唯一不会 link 的是 hdhome运行.
如果我 运行 从命令行 link 手动执行冗长的 "ld -lhdhomerun.so --verbose" 步骤,它确实会失败 - 因为它试图找到 libhdhomerun.so.so.
非常感谢收到任何建议 - 但我确实需要继续使用 code::blocks。
为了 link 库正确,您需要在您的环境中定义库路径,并使用带有 -l 标志的正确库名称。库路径在 LD_LIBRARY_PATH
环境变量中定义。对于 g++
的 -l
标志,不应提供库扩展 - 正如您已经观察到的那样,因此在您的情况下应该是这样的:
-lhdhomerun
有类似的话题,但我还没找到答案。
我正在使用 code::blocks IDE 构建测试控制台应用程序。它需要为 HD Home运行 DVB 调谐器加载名为 libhdhomerun.so(来自 Silicon Dust)的 DVB 共享库。 HDHR 调谐器库已使用 ./configure、...、sudo make install、ldconfig 等进行安装,并且它们都与它们的实用程序一起工作(同时构建)。所以 - 图书馆就在那里,没问题。
库将自身安装到 /usr/local/lib。实际上没有像其他共享库那样的 symlink,但是它最后也没有任何版本信息。
当我构建代码时(已明确包含 /usr/local/lib/libhdhomerun.so),ld 阶段失败并显示
"cannot find -lhdhomerun.so"
我已经尝试了包括 (/usr/local/lib/) libhdhomerun.so、hdhomerun.so、libhdhome运行、hdhome运行、创建 symlink 等等。没有任何区别。
奇怪的是,我以完全相同的方式包含了 udev、mysql 和 libdvbv5 共享库,它们都很好。唯一不会 link 的是 hdhome运行.
如果我 运行 从命令行 link 手动执行冗长的 "ld -lhdhomerun.so --verbose" 步骤,它确实会失败 - 因为它试图找到 libhdhomerun.so.so.
非常感谢收到任何建议 - 但我确实需要继续使用 code::blocks。
为了 link 库正确,您需要在您的环境中定义库路径,并使用带有 -l 标志的正确库名称。库路径在 LD_LIBRARY_PATH
环境变量中定义。对于 g++
的 -l
标志,不应提供库扩展 - 正如您已经观察到的那样,因此在您的情况下应该是这样的:
-lhdhomerun