g ++ ld使用code :: blocks共享库错误

时间:2016-10-10 07:11:14

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

有类似的主题,但我没有设法找到答案。

我正在使用代码:: blocks IDE构建测试控制台应用程序。它需要为HD Homerun DVB调谐器加载名为libhdhomerun.so(来自Silicon Dust)的DVB共享库。 HDHR调谐器库已经使用./configure, ...,sudo make install,ldconfig等安装,它们都可以使用它们的实用程序(同时构建)。所以 - 图书馆就在那里,确定。

库将自身安装到/ usr / local / lib中。实际上没有符号链接,因为有其他共享库,但它最后也没有任何版本信息。

当我构建代码(明确包含/usr/local/lib/libhdhomerun.so)时,ld阶段失败,

"cannot find -lhdhomerun.so"

我尝试了包括(/ usr / local / lib /)libhdhomerun.so,hdhomerun.so,libhdhomerun,hdhomerun的所有组合,为它创建一个符号链接等等。没有任何区别。

奇怪的是,我以完全相同的方式包含了udev,mysql和libdvbv5共享库,并且它们很好。唯一不会链接的是hdhomerun。

如果我从命令行“ld -lhdhomerun.so --verbose”运行手动详细链接步骤,它确实会失败 - 因为它试图找到libhdhomerun.so.so。

感激地收到任何建议 - 但我确实需要继续使用code :: blocks。

1 个答案:

答案 0 :(得分:0)

要正确链接库,您需要在您的环境中定义库路径,并使用正确的库名和-l标志。库路径在LD_LIBRARY_PATH环境变量中定义。对于-l g++的标记,不应提供库扩展名 - 正如您已经观察到的那样,因此在您的情况下它应该是这样的:

-lhdhomerun